删除列表中的元素(如果在另一个列表中)

时间:2020-03-26 11:42:58

标签: python list

我有两个带有一些数字组合的列表,我想删除另一个列表中的一个列表元素。

我的意思是,列表可能是:

X = [1, 2, 3, 128, 129, 134, 135, 136, 145, 146, 156, 164, 234, 235, 236, 245, 246, 266, 345]
Y = [12, 16, 26, 126]

所以我想从第一个列表中删除所有包含第二个列表中任何元素的元素,因此我们将删除所有包含'12','16','26'或'126'的项目。 / p>

最后显示由

复合的列表
[1, 2, 3, 134, 135, 136, 145, 146, 156, 234, 235, 236, 245, 246, 256, 345]

致以问候并预先致谢

2 个答案:

答案 0 :(得分:3)

您可以使用列表理解:

str_y = list(map(str, Y))

X = [e for e in X if all(y not in str(e) for y in str_y)]
X

输出:

[1, 2, 3, 134, 135, 136, 145, 146, 156, 234, 235, 236, 245, 246, 345]

答案 1 :(得分:2)

您可以尝试一下。

Y=[str(i) for i in Y]
[i for i in X if not any(str(i).__contains__(j) for j in Y)]
# [1, 2, 3, 134, 135, 136, 145, 146, 156, 234, 235, 236, 245, 246, 345]