我有一个问题
说我有两个列表,每个列表包含几个字符串
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中这样做?谢谢!
答案 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']
>>>