Python删除列表中的元素

时间:2015-02-17 16:18:25

标签: python

我有一个问题

说我有两个列表,每个列表包含几个字符串

a = ['x', 'y', 'z', 't'] b = ['xyz', 'yzx', 'xyw']

我想删除列表b中的xyw,因为w不在列表a中。

我试过

for s in a:
    k = [t for t in b if t.find(s)]

但它没有用 有谁知道如何在Python中这样做?谢谢!

2 个答案:

答案 0 :(得分:3)

您可以检查每个字符串中的所有字母是否都包含在列表a中,然后使用列表推导过滤掉字符串。

>>> a = ['x', 'y', 'z']
>>> b = ['xyz', 'yzx', 'xyw']
>>> [i for i in b if all(j in a for j in i)]
['xyz', 'yzx']

答案 1 :(得分:1)

>>> a = ['x', 'y', 'z']
>>> b = ['xyz', 'yzx', 'xyw']
>>> for element in b:
...     if not all(i in a for i in element):
...         b.remove(element)
... 
>>> b
['xyz', 'yzx']
>>> 

正确:我不应该在迭代期间删除。所以像上面的解决方案一样适合

>>> a = ['x', 'y', 'z']
>>> b = ['xyz', 'yzx', 'xyw']
>>> b = [i for i in b if all(j in a for j in i)]
>>> b
['xyz', 'yzx']
>>>