我在jinja2模板框架中为python使用了一些条件for循环.我想知道是否有办法在jinja2之外做同样的事情,类似于:
{% for i in a if i == 1 %}
{{ i }}
{% else %}
no items
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
当我在普通的'蟒蛇'中尝试这个时,它不喜欢它
>>> for i in a if i == 1:
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我希望能做的是这样的:
for i in a if i == 1:
print i
else:
print 'no matches found'
Run Code Online (Sandbox Code Playgroud)
你已经非常接近了,所需要的只是一个列表理解,它形成一个只有值a等于1的列表.
在python中,该for..else语句也是有效的.
for i in [x for x in a if x == 1]:
print i
else:
print 'no matches found'
Run Code Online (Sandbox Code Playgroud)
这将打印所有的值a是1,除非没有被发现.然后它打印no matches found
正如davidism所提到的,为了防止对整个列表进行中间评估,您可以使用生成器而不是LC:
for i in (x for x in a if x == 1):
print i
else:
print 'no matches found'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1504 次 |
| 最近记录: |