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