我有一個這樣的名單:刪除元素 - Python的
['A','B','C']
我需要的是刪除基於我的功能得到了輸入一個元素。例如,如果我決定要刪除它應該返回:
['B','C']
我沒有成功
list = ['A','B','C']
[var for var in list if list[var] != 'A']
我該怎麼辦呢試過嗎? 感謝
我有一個這樣的名單:刪除元素 - Python的
['A','B','C']
我需要的是刪除基於我的功能得到了輸入一個元素。例如,如果我決定要刪除它應該返回:
['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)
。
http://stackoverflow.com/questions/7016304/removing-elements-from-a-list – devnull
http://stackoverflow.com/questions/4915920/how-to-delete-an-item-in-a -list-if-it-exists-python/4915964#4915964 – jortizromo
沒有人在這裏指出你真正的錯誤:在列表理解中,它會嘗試評估不能工作的list ['A']有兩個原因。 1)它不是字典和2)你試圖使用該值作爲索引 –