The*_*dor 9 python list-comprehension
我有一个这样的列表:
['A','B','C']
Run Code Online (Sandbox Code Playgroud)
我需要的是根据函数中的输入删除一个元素.例如,如果我决定删除A,它应该返回:
['B','C']
Run Code Online (Sandbox Code Playgroud)
我试过没有成功
list = ['A','B','C']
[var for var in list if list[var] != 'A']
Run Code Online (Sandbox Code Playgroud)
我该怎么做?谢谢
vau*_*tah 14
简单的lst.remove('A')工作:
>>> lst = ['A','B','C']
>>> lst.remove('A')
['B', 'C']
Run Code Online (Sandbox Code Playgroud)
但是,一次调用.remove仅删除列表中的第一个匹配项'A'.要删除所有'A'值,您可以使用循环:
for x in range(lst.count('A')):
lst.remove('A')
Run Code Online (Sandbox Code Playgroud)
如果你坚持使用列表理解,你可以使用
>>> [x for x in lst if x != 'A']
['B', 'C']
Run Code Online (Sandbox Code Playgroud)
以上将删除所有等于的元素'A'.
您的代码的改进(几乎是正确的)将是:
list = ['A','B','C']
[var for var in list if var != 'A']
Run Code Online (Sandbox Code Playgroud)
但是,@ frostnational的方法对于单个值更好.
如果您要使用不允许的值列表,则可以执行以下操作:
list = ['A','B','C', 'D']
not_allowed = ['A', 'B']
[var for var in list if var not in not_allowed]
Run Code Online (Sandbox Code Playgroud)