我遍历Python
中的元组列表,我觉得中间的元素在某种程度上被跳过了。这里是我的代码块,用进球来删除具有None
作为第二元素的任何元组:迭代可能会跳过一个元素
print('List of tuples before modification: ' +str(list_of_tuples))
for refseq_tuple in list_of_tuples:
print('tuple: ' +str(refseq_tuple))
if refseq_tuple[1] == None:
list_of_tuples.remove(refseq_tuple)
print('List of tuples after modification: ' +str(list_of_tuples))
,这里是输出:
List of tuples before modification: [('100652761', None), ('100653343', None), ('3183', 0)]
tuple: ('100652761', None)
tuple: ('3183', 0)
List of tuples after modification: [('100653343', None), ('3183', 0)]
所以......发生了什么中间(第二)元素?它看起来好像根本不被迭代,或者它会在其他两个元组之间打印。
可能重复(http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python ) –
您在迭代*时修改列表*。迭代器索引不知道你删除的项目,并继续增加,因此似乎跳过项目。 –
另外,通常使用相等来检查“无”,这是不被接受的。改用'is'。 –