为什么以下两个陈述导致不同的结果?我在这里错过了什么?
list = [1,2]
if (item < 0 for item in list):
print "This prints."
for item in list:
if item < 0:
print "This doesn't print."
Run Code Online (Sandbox Code Playgroud)
第一个是生成器表达式,真实性将取决于是否生成任何项目.它将打印一次或零次.从这个意义上说,你会得到任何长度列表相同的行为.
第二个实际上迭代每个项目,并将打印满足该条件的每个项目.
一个(hacky)解决方法,使这个单线程
>>> l = [-1, -2, 1, 2]
>>> print('this prints\n' * len([item for item in l if item < 0]))
this prints
this prints
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27 次 |
| 最近记录: |