簡體   English   中英

如何根據元組中的值刪除列表中的元組?

[英]How do I delete a tuple in a list based on a value in the tuple?

我有一個元組列表。 我要刪除列表中的所有項目,其中元組中的第二項和第三項是bananas1 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)

改用列表理解:

my_table = [elem for elem in my_table if elem[1:] != ('bananas', 1)]

這將刪除看作是過濾工作。 通過創建新列表來保留所有不應刪除的內容。

您也可以:

filterted_table=filter(lambda t: t[1:]!=('bananas', 1),my_table)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM