ped*_*ram 1 python tuples list
我有一个元组列表.我想删除列表中的所有项目,其中在元组中的第二和第三项bananas和1.for循环不起作用,因为它在迭代它时从列表中删除项目.不知道怎么回事?
my_table = [('apples', 'bananas', 1), ('pears', 'bananas', 1), ('grapes', 'apple', 2), ('apples,' 'pears', 2), ('apples', 'bananas', 2), ('grapes', 'bananas', 2)]
>>> printTable(my_table)
('apples', 'bananas', 1)
('pears', 'bananas', 1)
('grapes', 'apple', 2)
('apples,pears', 2)
('apples', 'bananas', 2)
('grapes', 'bananas', 2)
>>> for item, row in enumerate(my_table):
if row[1] == 'bananas' and row[2] == 1:
print item, row
0 ('pears', 'bananas', 1)
5 ('apples', 'bananas', 1)
6 ('grapes', 'bananas', 1)
>>> for item, row in enumerate(my_table):
if row[1] == 'bananas' and row[2] == 1:
my_table.remove(row)
>>> printTable(my_table)
('pears', 'bananas', 1)
('grapes', 'apple', 2)
('apples,pears', 2)
('apples', 'bananas', 2)
Run Code Online (Sandbox Code Playgroud)
改为使用列表理解:
my_table = [elem for elem in my_table if elem[1:] != ('bananas', 1)]
Run Code Online (Sandbox Code Playgroud)
这将删除视为过滤作业; 通过创建新列表来保留不应删除的所有内容.