同时从所有列表中删除项目

2024-04-16 19:21:13 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有3张单子

list_of_fruits = ["apple", "banana", "orange"]

list_of_orange_things = ["carrot", "orange", "basketball"]

list_of_colors = ["orange", "green", "blue"]

有没有一种方法可以同时从所有列表中删除“orange”,而无需特别处理任何单个列表?你知道吗

在运行程序的某个时刻,从所有列表中删除“orange”对我来说很重要。有一种方法可以一次从所有列表中删除“orange”,而不是单独从每个列表中删除它。你知道吗


从每个列表中逐个删除允许在我更改程序中列表的数量时出现错误的可能性。它要求我在程序中找到每个需要从所有列表中删除“orange”的地方,并再次检查要从中删除的列表是否与程序中的所有列表一致。它也会造成不必要的混乱。另一种方法将是首选,以减少杂波,使误差不可能。你知道吗


我的实际程序按程序生成内容,因此新对象将一直被创建和删除。重要的是,程序能够在没有人机交互的情况下尽可能多地处理更改。你知道吗


Tags: of方法程序apple列表greenlist单子
3条回答

好的,我借用了@Ajax1234提供的代码,并对其进行了修改,使其适用于我的应用程序。你知道吗

他的解决方案几乎是完美的,只是没有改变每个人的名单。我添加了代码来遍历包含列表中的每个列表,并从每个列表中删除“orange”。你知道吗

@John Dengis从一开始就有,但我想提供代码。你知道吗

这是密码。你知道吗

list_of_fruits = ["apple", "banana", "orange"]

list_of_orange_things = ["carrot", "orange", "basketball"]

list_of_colors = ["orange", "green", "blue"]

new_list = [list_of_fruits, list_of_orange_things, list_of_colors]


for lists in new_list:
    for item in lists:
        if item == "orange":
            lists.remove(item)

没有错误,当我向程序中添加或删除列表时,它会动态调整。你知道吗

正如@johndengis指出的,这是一个遍历列表中的列表的问题。这里有一个问题得到了非常相似的回答:Python - Iterating through list of list

你可以试试这个:

s = "orange"

list_of_fruits = ["apple", "banana", "orange"]

list_of_orange_things = ["carrot", "orange", "basketball"]

list_of_colors = ["orange", "green", "blue"]

new_list = [list_of_fruits, list_of_orange_things,list_of_colors]

final_list = [[b for b in i if b != s] for i in new_list]

输出:

[['apple', 'banana'], ['carrot', 'basketball'], ['green', 'blue']]

这个基本算法迭代new_list中包含的列表并过滤掉任何出现的字符串s。但是正如@Willem Van Onsem所指出的,您需要找到一种存储列表的新方法,这样您就可以遍历每个人一次,比如列表中的列表。你知道吗

只需保留一个包含所有列表的列表,在创建时向该列表中添加一个新列表,当需要从所有列表中删除某些内容时,可以遍历列表。你知道吗

相关问题 更多 >