[英]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.