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

时间:2013-04-26 07:41:42

标签: python loops

我有这样的循环

for a in list1:
     for b in list2:
         for c in list3:
             print "Hello"

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

如果list3为空且list2包含2个元素且list1有一个元素,那么我应该看到hello 2次

1 个答案:

答案 0 :(得分:8)

for a in list1 or [None]:
     for b in list2 or [None]:
         for c in list3 or [None]:
             print "Hello"

None中的[None]可以替换为任何其他单个对象。

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

其他方式(如果变量abc不重要)将是:

for i in xrange(max(len(list1), 1) * max(len(list2), 1) * max(len(list2), 1))):
    print 'Hello'

<强>更新

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

for m,n in zip(l1,l2) or [None]:

可以使用以下方式更正:

for m,n in zip(l1 or [None], l2 or [None]):

for m,n in zip(l1, l2) or [[None, None]]: