繁体   English   中英

如何从列表列表中的所有列表中删除元素?

[英]How to remove an element from all lists in a list of lists?

假设我有一个列表列表。

L = [[1,2,3], ['a',2,True],[1,44,33,12.1,90,2]]

我希望能够从列表L中的每个子列表中删除特定元素的所有实例。

因此,例如,我可能想删除数字2,这样会产生

L = [[1,3], ['a',True],[1,44,33,12.1,90]]

我试图使用此功能+代码:

def remove_values_from_list(the_list, val):
    return [value for value in the_list if value != val]

for i in L:
    i = remove_values_from_list(i, '2')

但是,输出仍会以其原始形式给出L,并且不会删除2。

i是未与L连接的变量。 L分配了一个值,然后将其重新分配给其他值; 这根本不会影响L

一种非破坏性的方法(例如,保留L ,为结果创建一个新列表):

newL = [[value for value in the_list if value != val] for the_list in L]

破坏性的方式(即更改L本身):

for the_list in L:
    while value in the_list:
        the_list.remove(value)

尝试这个 :

def remove_values_from_list(the_list, val):
    return [[v for v in l1 if v!= val] for l1 in the_list]

在您的代码中,您正在检查是否只有一个子列表等效于val参数。 您需要在子列表中检查它。 还有一个次要的错误是检查子列表中具有准确类型的项目。 您正在搜索'2' (str类型),其中子列表中有2 (int类型)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM