我知道如何在单独的行上使用for循环和if语句,例如:

>>> a = [2,3,4,5,6,7,8,9,0]
... xyz = [0,12,4,6,242,7,9]
... for x in xyz:
...     if x in a:
...         print(x)
0,4,6,7,9

我知道我可以使用一个列表理解来组合这些语句时很简单,例如:

print([x for x in xyz if x in a])

但是我在任何地方都找不到一个很好的例子(可以复制和学习)来演示一组复杂的命令(不仅仅是“print x”),这些命令发生在for循环和一些if语句的组合之后。我期待的是这样的:

for x in xyz if x not in a:
    print(x...)

这不是python应该工作的方式吗?


当前回答

找到列表A和b的唯一公共元素的简单方法:

a = [1,2,3]
b = [3,6,2]
for both in set(a) & set(b):
    print(both)

其他回答

找到列表A和b的唯一公共元素的简单方法:

a = [1,2,3]
b = [3,6,2]
for both in set(a) & set(b):
    print(both)
a = [2,3,4,5,6,7,8,9,0]
xyz = [0,12,4,6,242,7,9]  
set(a) & set(xyz)  
set([0, 9, 4, 6, 7])

使用intersection或intersection_update

十字路口: A = [2,3,4,5,6,7,8,9,0] Xyz = [0,12,4,6,242,7,9] Ans = sorted(set(a).intersection(set(xyz))) intersection_update: A = [2,3,4,5,6,7,8,9,0] Xyz = [0,12,4,6,242,7,9] B = set(a) b.intersection_update(某某) b是答案

你可以像这样使用生成器表达式:

gen = (x for x in xyz if x not in a)

for x in gen:
    print(x)

我可能会用:

for x in xyz: 
    if x not in a:
        print(x...)