我在这个问题上已经抓了一个小时。我试图创建一个从元组列表中删除项目的函数是元组在位置1中包含0。
players = [('a', 1), ('b', 0), ('c', 1), ('d', 1), ('e', 1), ('f', 1),
('g', 0), ('h', 1), ('i', 1), ('j', 0), ('k', 0), ('l', 1)]
def splittuple(mylist):
for counter, i in enumerate(mylist):
print counter, 'original: '+ str(i)
if i[1] == 0:
players.remove(i)
print players
它打印以下输出:
0 original: ('a', 1)
1 original: ('b', 0)
2 original: ('d', 1)
3 original: ('e', 1)
4 original: ('f', 1)
5 original: ('g', 0)
6 original: ('i', 1)
7 original: ('j', 0)
8 original: ('l', 1)
[('a', 1), ('c', 1), ('d', 1), ('e', 1), ('f', 1), ('h', 1), ('i', 1), ('k', 0), ('l', 1)]
我不确定为什么(' k',0)元组仍在列表中。它的i [1]值等于0,但看起来for循环正在跳过它。我原以为它会被删除。
如果用户连续传递两个位于第1位的0的元组,那么循环就会变得混乱。