我遍歷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'。 –