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
首先,这不是一个错误。推导式创建一个生成器对象,它将按顺序返回每个项目。
如果您想运行生成器来生成实际列表,则只需将推导式放在方括号中即可:
[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]))