Python中的空循环条件

12 投票
2 回答
18640 浏览
提问于 2025-04-17 19:44

在Django模板中,for循环有一个empty条件,这个条件只有在你循环的对象是空的时候才会被触发。

比如:

{% for x in my_list %}
    #do something
{% empty %}
   <p>  my_list is empty </p>
{% endfor %}

在这里,如果我的列表my_list是空的,那么它就会打印出my_list is empty

在Python中有没有类似的东西呢?

我现在使用的是if-else条件,但看起来不太好。我想找一个不需要用if-else条件的解决方案。

我现在的代码是:

if len(my_list):
   for x in my_list:
       doSomething()
else:
    print "my_list is empty"

2 个回答

2

如果你确定这个迭代器不会返回某个特定的值,比如说 None 或者 False,那么你可以这样做:

x = False
for x in my_list:
    doSomething(x)
if x is False:
    print "my_list is empty"
21

你需要继续使用 if 语句,不过可以把它简化一下:

for x in my_list:
    doSomething()
if not my_list:
    print "my_list is empty"

因为 my_list 是空的,所以 for 循环的部分根本不会执行。而且在布尔上下文中,空列表被认为是 False

撰写回答