簡體   English   中英

使用列表理解刪除列表中的元素 - Python

[英]Remove element in list using list comprehension - Python

我有一個這樣的清單:

['A','B','C']

我需要的是根據我在函數中獲得的輸入刪除一個元素。 例如,如果我決定刪除 A 它應該返回:

['B','C']

我試過沒有成功

list = ['A','B','C']
[var for var in list if list[var] != 'A']

我該怎么做? 謝謝

簡單的lst.remove('A')將起作用:

>>> lst = ['A','B','C']
>>> lst.remove('A')
['B', 'C']

但是,對.remove調用只會刪除列表中第一次出現的'A' 要刪除所有'A'值,您可以使用循環:

for x in range(lst.count('A')):
    lst.remove('A')

如果你堅持使用列表理解,你可以使用

>>> [x for x in lst if x != 'A']
['B', 'C']

以上將刪除所有等於'A'元素。

對您的代碼(幾乎是正確的)的改進將是:

list = ['A','B','C']
[var for var in list if var != 'A']

但是,@frostnational 的方法適合單個值。

如果您要禁止的值列表,您可以這樣做:

list = ['A','B','C', 'D']
not_allowed = ['A', 'B']
[var for var in list if var not in not_allowed]

您可以只使用列表的remove方法。 只需執行list.remove('A')將其刪除。

如果您有要刪除的項目的索引,請使用pop方法。 list.pop(0)

如果您不確定該元素是否存在,您可能需要在刪除之前檢查:

if 'A' in lst:
    lst.remove('A')

找到這個簡化的代碼:

list1 = [12,24,35,24,88,120,155]

while 24 in list1:

    list1.remove(24)

print(list1)

好運!

你真的很接近:

list = ['A','B','C']
[var for var in list if list[list.index(var)] != 'A']

您嘗試使用需要索引值的語法來引用列表項。

originalList=['A','B','C']
print([val for val in originalList if val!='A'])

這打印

['B', 'C']

暫無
暫無

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

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