Python删除列表中的元素

Python删除列表中的元素,python,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中实现这一点吗?谢谢大家! 您可以检查每个字符串中的所有字母是否都包含在列表中,然后使用列表理解过滤掉字符串 >>> a = ['

我有个问题

假设我有两个列表,每个列表包含两个字符串

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中实现这一点吗?谢谢大家!

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

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

您可以检查每个字符串中的所有字母是否都包含在列表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']
更正:我不应该在迭代期间删除。因此,按照上面的解决方案进行操作是合适的

>>> 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']
>>>
更正:我不应该在迭代期间删除。因此,按照上面的解决方案进行操作是合适的

>>> 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']
>>>

我很抱歉,但由于SO不是一个为我做的网站,您需要向我们展示您迄今为止所做的尝试!然后我们可以帮你解决你的问题@谢谢你的提醒,我刚刚加入这个网站。我试过了,我改变了我的问题。欢迎!好的,当你得到一个完整的答案时,请记住,当你解释更多关于你的问题时!我很抱歉,但由于SO不是一个为我做的网站,您需要向我们展示您迄今为止所做的尝试!然后我们可以帮你解决你的问题@谢谢你的提醒,我刚刚加入这个网站。我试过了,我改变了我的问题。欢迎!好的,当你得到一个完整的答案时,请记住,当你解释更多关于你的问题时!伟大的但是如果a=['x','y','z','t',],如何更改代码?谢谢我试过了,但答案是[]。。。我也试过了[I代表b中的I,如果a中的j有I代表j],答案是['xyz','yzx','xyw']…太棒了!但是如果a=['x','y','z','t',],如何更改代码?谢谢我试过了,但答案是[]。。。我也尝试过[I代表b中的I,如果I代表a中的j],答案是['xyz'、'yzx'、'xyw']……对于例如b=['xyz'、'yzx'、'xyw'、'xyq'],这失败了,因为你在迭代列表时正在从列表中删除项目。@ZeroPiraeus哦,我明白了。我不应该那样做。我应该按照上述解决方案重新分配到b。是这样吗?对于例如b=['xyz','yzx','xyw','xyq'],这会失败,因为您在迭代列表时正在从列表中删除项目。@ZeroPiraeus哦,我知道了。我不应该那样做。我应该按照上述解决方案重新分配到b。对吗?