【发布时间】:2018-09-15 06:15:18
【问题描述】:
我有一个包含以下内容的嵌套列表:
[['X', 0],
['X', 0],
['X', ''],
['X', '']]
for i in myList:
if i[1] == 0:
myList.remove(i)
这只会删除第一个列表。输出将是:
[['X', 0],
['X', ''],
['X', '']]
我怎样才能同时获得它?
【问题讨论】:
-
在迭代列表时不要更改列表...
-
当你
remove(i)时,你改变了你正在迭代的列表。因此,当您删除元素 0 时,您的循环将继续使用元素 1,但之前 曾是的元素 1 现在是元素 0,因为之前的元素 0 已被删除,所以您跳过了一个值。跨度> -
同上,但如果你想使用你正在使用的网络,你需要反向迭代列表:
for i in reversed(range(len(myList))): -
或使用
for i in myList[:]复制原始列表。
标签: python python-3.x python-2.7