我的目标是遍历两个列表的差异。
我尝试了一个笨拙的代码来写 a - b,如下所示:
for i in a:
if i in b:
continue
#statements
我想知道是否有更符合Python风格/更高效的做法。
我的目标是遍历两个列表的差异。
我尝试了一个笨拙的代码来写 a - b,如下所示:
for i in a:
if i in b:
continue
#statements
我想知道是否有更符合Python风格/更高效的做法。
您可以使用集合(sets)来查看差异:
a = [1, 2, 3, 4, 5]
b = [2, 4, 6]
a = set(a)
b = set(b)
for i in a.difference(b):
print(i)
# even supports the arithmetic syntax :D
for i in a - b:
print(i)
就集合而言,属于a
但不属于b
的项目将构成集合差,因此这将是
for i in set(a).difference(b):
# statements
你现在的写法已经很好了。如果你不喜欢使用 continue
语句,你可以使用生成器进行迭代:
for i in (x for x in a if x not in b):
虽然从可读性的角度来看,这可能更糟糕。