在Python中,一般只有set集合才重载了【-】操作符,用来做差集操作,而列表做类似差集的操作则只能自己实现,而且做这种操作时,要是列表有重复元素,则可能会有点问题,此时根据实际情况应该问题不大
下面是一些可行的方法
- 迭代遍历
a = [0, 1, 2, 2, 3, 4, 4, 5, 6, 7, 8, 9]
b = [7, 2, 1]
c = []
for x in a:
if x not in b:
c.append(x)
print(c) # [0, 3, 4, 4, 5, 6, 8, 9]
- 转换成集合问题
a = [0, 1, 2, 2, 3, 4, 4, 5, 6, 7, 8, 9]
b = [7, 4, 1]
# 这里强转陈set会导致list中的重复元素只保留一个,这没办法,因为list允许重复,set不允许
c = list(set(a) - set(b))
print(c) # [0, 2, 3, 5, 6, 8, 9]
- 列表生成式
a = [0, 1, 2, 2, 3, 4, 4, 5, 6, 7, 8, 9]
b = [7, 2, 1]
c = [x for x in a if x not in b]
print(c) # [0, 3, 4, 4, 5, 6, 8, 9]
网友评论