簡體   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