我正在尝试设置成员资格,但这一行给了我一个错误: print(x for x in s1 if x in s2) 错误在哪里?

问题描述 投票:0回答:1
s1 = { 1,2,3,4,5,6,7}
s2 = {4,5,6,7,8,9,10}

我正在尝试更换代码

for x in s1:
    if x in s2:
        print(x)

与单线

print(x for x in s1 if x in s2)

但我收到错误

位于0x0000029966B28110>

错在哪里?

预期输出:

4
5
6
7
python set-comprehension
1个回答
0
投票

首先,这不是一个错误。推导式创建一个生成器对象,它将按顺序返回每个项目。

如果您想运行生成器来生成实际列表,则只需将推导式放在方括号中即可:

[x for x in s1 if x in s2]

但这会给你带来价值;

print
不是一个值,而是一个声明。你不能在推导式中执行
print
,而应该只坚持命令式
for
循环。它更Pythonic。

但是如果你真的想使用理解,你可以这样做:

print("\n".join([str(x) for x in s1 if x in s2]))
© www.soinside.com 2019 - 2024. All rights reserved.