我有这样的循环
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次
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)