如何在Python中按值删除多个列表项
我有这样一份清单:如何在Python中按值删除多个列表项,python,list,Python,List,我有这样一份清单: a=['a','b','c','f','w','r','q'] 我想这样做: b=a.remove['a','b','q'] 删除某些元素时,将a的所有值转移到b变量。您可以使用列表理解,如下所示: b = [ value for value in a if value not in ['a', 'b', 'c'] ] 如果排除列表很大,请使用set。为什么不创建一个包含要删除的值的单独列表,然后使用循环遍历第二个列表并从第一个列表中删除该项 b
a=['a','b','c','f','w','r','q']
我想这样做:
b=a.remove['a','b','q']
删除某些元素时,将
a
的所有值转移到b
变量。您可以使用列表理解,如下所示:
b = [
value
for value in a
if value not in ['a', 'b', 'c']
]
如果排除列表很大,请使用
set
。为什么不创建一个包含要删除的值的单独列表,然后使用循环遍历第二个列表并从第一个列表中删除该项
b = ['a', 'b', 'q']
for i in b:
if i in a:
a.remove(i)
列表理解:
>>> a = ['a','b','c','f','w','r','q']
>>> b = [x for x in a if x not in ['a','b','q']]
>>> b
['c', 'f', 'w', 'r']
或者,如果您的值是唯一的且顺序无关紧要,则可以使用集合:
>>> set(a) - set(['a','b','q'])
{'c', 'r', 'w', 'f'}
仅通过迭代并逐个比较值。此外,要使用
set
s,值应该是可散列的