【发布时间】:2017-09-12 20:37:32
【问题描述】:
我在查找某个元素是否已经存储在 Python 代码的列表中时遇到了一些麻烦。我用过两个脚本。我写的第二个结果有效,但第一个没有,我不明白为什么(这让我很困扰)。我的列表名为grains,如下所示:[[a, b], [c, d], [e, f], ...]。
这是第一段代码,不起作用:
for i in range(0, len(grains) - 1) :
if grains[i] == [x,y] :
return
else :
grains.append([x,y])
grains_restants = grains_restants - 1
fourmi_chargee = False
return
这是第二段代码,这个有效:
if not([x,y] in grains) :
grains.append([x,y])
grains_restants = grains_restants - 1
fourmi_chargee = False
return
所以我试图理解为什么第一段代码不起作用,但我放弃了。你知道为什么吗?
【问题讨论】:
-
grains中的a、b的值是多少?x和y的值是多少? -
range的参数是inclusive, exclusive- 这意味着它将包括您给它的第一个数字,一直到但不包括第二个数字。因此,您永远不会真正访问 for 循环中的最后一个元素。 -
因为在你的第一段代码中它只会比较
grains[0] == [x, y],然后for循环将return要么是True要么是False。 -
另外,如果您的列表示例正确,则列表中不应有元素
[x,y]。相反,应该有[w, x]和['y, z]。 -
您可能想要
set而不是list