2014-05-07 46 views
3

我有一個這樣的名單:刪除元素 - Python的

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

我需要的是刪除基於我的功能得到了輸入一個元素。例如,如果我決定要刪除它應該返回:

['B','C'] 

我沒有成功

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

我該怎麼辦呢試過嗎? 感謝

+0

http://stackoverflow.com/questions/7016304/removing-elements-from-a-list – devnull

+0

http://stackoverflow.com/questions/4915920/how-to-delete-an-item-in-a -list-if-it-exists-python/4915964#4915964 – jortizromo

+1

沒有人在這裏指出你真正的錯誤:在列表理解中,它會嘗試評估不能工作的list ['A']有兩個原因。 1)它不是字典和2)你試圖使用該值作爲索引 –

回答

6

簡單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'

4

的改善你的代碼(這幾乎是正確的)是:

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] 
+0

謝謝,我認爲爲了更好的編碼目的,我會接受其他答案! –

1

你可以只用列表的方法remove。只要做list.remove('A')它將被刪除。

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