Python:即使返回false,for循环也有一次运行方式

use*_*401 -3 python loops

我有这样的循环

for a in list1:
     for b in list2:
         for c in list3:
             print "Hello"
Run Code Online (Sandbox Code Playgroud)

不使用任何if else语句.我希望如果所有列表中都有元素,那么它应该正常重复,但如果列表为空,那么for循环应该表现得像它不存在并运行下面的代码一次

就像if list3是空的并且list2包含2元素并且list1有一个元素然后我应该看到hello2次

eum*_*iro 8

for a in list1 or [None]:
     for b in list2 or [None]:
         for c in list3 or [None]:
             print "Hello"
Run Code Online (Sandbox Code Playgroud)

的None在[None]可以由任何其他单个对象来代替.

这样,空列表将被包含一个元素的列表替换,循环将继续进行一次.

另一种方式(如果该变量a,b而c不是重要的)是:

for i in xrange(max(len(list1), 1) * max(len(list2), 1) * max(len(list2), 1))):
    print 'Hello'
Run Code Online (Sandbox Code Playgroud)

UPDATE

您在使用我的代码时没有正确调整它的想法:

for m,n in zip(l1,l2) or [None]:
Run Code Online (Sandbox Code Playgroud)

可以使用以下方法纠正

for m,n in zip(l1 or [None], l2 or [None]):
Run Code Online (Sandbox Code Playgroud)

要么

for m,n in zip(l1, l2) or [[None, None]]:
Run Code Online (Sandbox Code Playgroud)

  • @ user2294401 - 你改变了我的代码,不是吗? (2认同)