我有这样的循环
for a in list1:
for b in list2:
for c in list3:
print "Hello"
不使用任何if else语句。我希望如果所有列表中都有元素,那么它应该正常重复,但如果列表为空,那么for循环应该表现得像它不存在并运行下面的代码
如果list3
为空且list2
包含2
个元素且list1
有一个元素,那么我应该看到hello
2次
答案 0 :(得分:8)
for a in list1 or [None]:
for b in list2 or [None]:
for c in list3 or [None]:
print "Hello"
None
中的[None]
可以替换为任何其他单个对象。
这样,空列表将被包含一个元素的列表替换,循环将继续执行一次。
其他方式(如果变量a
,b
和c
不重要)将是:
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]]: