在whileloop中生成的Python列表似乎不是

2024-06-16 10:32:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码如下:

self.newMonsterList =[]
myKeys = []
if (len(self.myList)>0):
    for i in range(len(self.myList)-1):
        myVar = self.myList[i]
        myKeys.append(myVar[1])
        lis = game.active_entities.keys()
for k in lis:
    if (k not in myKeys):
        game.active_entities[k].destroy()
for it in self.myList:
    if (it[1] in lis):
        self.setEnt(it, game.active_entities[it[1]])
    else:
        self.newMonsterList.append(it)
self.makeEnt()

在while循环中调用此代码(即它所在的方法)显然是有效的。 [1]作为附加项的实体新怪物列表. 这是有效的,我已经测试过了。因此,在所有这些代码的第一个完整回合(即调用此代码的while循环)之后的newMonsterList中的ID不应该在第二个之后。 不过,的确如此。 另一方面,如果我在makent中检查newMonsterList的内容是否已经是一个键,我会得到正确的结果。 因此,我得出结论,newMonsterList在while循环运行中没有被正确清空。 我已经试了两个小时的不同版本了…有人知道吗?在

我想把它写得更简单些: a是int的列表

d是以int为键的dict

^{pr2}$

我现在发现怪物列表在每一回合都是空的,然而,在ifclause(“if(it not in d):”)中,“it”在每一回合都会出现在列表中。但是,“it”在第一次迭代后肯定也在d中,我可以打印它。在


Tags: 代码inselfgame列表forifit
1条回答
网友
1楼 · 发布于 2024-06-16 10:32:47

您知道这个循环迭代self.myList,但是跳过列表中最后一项,对吗?在

myKeys = []
if (len(self.myList)>0):
    for i in range(len(self.myList)-1):
        myVar = self.myList[i]
        myKeys.append(myVar[1])
        lis = game.active_entities.keys()

跳过最后一项似乎很可疑。在

仅供参考,我认为上述代码相当于:

^{pr2}$

相关问题 更多 >