我有一个生成两个列表的程序。我想从list1打印一个项目,然后切换到从列表2打印项目,然后从list1 ..etc返回打印。然而,每当我尝试它时,它只打印list1然后list2。
请帮忙。
代码:
List1 = ['a', 'b' , 'c', 'd', 'e', 'f']
List2 = ['1', '2', '3', '4', '5', '6']
continue = True
while continue == True:
for i in List1:
print i
print '/n'
continue = False
while continue == False:
for i in List2:
print i
print '/n'
continue = True
输出
a
b
c
d
e
f
1
2
3
4
5
6
期望的输出:
a
1
b
2
c
3
d
4
e
5
f
6
答案 0 :(得分:6)
Python的内置zip function提供了一种实现该目标的非常简洁的方法。
for x,y in zip(List1,List2):
print(x)
print(y)
# Out:
a
1
b
2
c
3
d
4
e
5
f
6
这是一个更加Pythonic的解决方案。你不需要两个不同的循环,你需要一个循环按你想要的顺序打印它们。 “zip”函数将列表成对,然后随着循环的进行将每对放入x,y。因此,您将能够在列表的每次迭代中打印每个列表中的值。
有时候在提问时,人们可以拥有xy problem,在这些问题中,他们会询问他们解决问题的方法,而不是询问问题本身。退后一步并询问您的方法是否是最好的方法总是好的,如果您遇到问题,可能还有哪些方法可行。看起来你正在考虑将你的问题作为在两个列表之间来回跳转的问题,这导致你想到两个循环,每个列表一个循环。但更好的解决方案是使用单个循环来同时跟踪两个列表。
答案 1 :(得分:2)
我的回答是基于您的问题的代码。如果这是您想要的格式,请使用我的答案。否则,其他答案更像Pythonic。
请注意我已将“continue”重命名为“switch”,因为continue是一个保留的Python字,会产生语法错误。
List1 = ['a', 'b' , 'c', 'd', 'e', 'f']
List2 = ['1', '2', '3', '4', '5', '6']
switch = True
while True:
while switch == True:
for i in List1:
print(i)
List1.pop(0)
switch = False
break
while switch == False:
for i in List2:
print(i)
List2.pop(0)
switch = True
break
如果您设置变量switch
的状态,那么打破它将完全按照您想要的循环。
由于这个循环中断I .pop()
第0个索引值,以确保接收到正确的输出。
此代码的效率非常低,我相信您可以找到其他方法来生成所需的输出。
编辑:要使用不相等的列表长度执行此操作,您必须在switch = False
循环的末尾添加while switch == True:
,反之亦然while switch == False:
编辑2:这也为您提供了在循环之间切换的解决方案:)
答案 2 :(得分:1)
continue = False
不会阻止for
循环运行完成。只有 while
循环完成后才会对{{1>}条件进行评估for
条件。这会导致打印List1
的所有元素,然后打印List2
的所有元素。
有很多方法可以循环使用两个列表
# One option
for k in range(len(List1)):
print List1[k]
print List2[k]
# Another option
for a, b in zip(List1, List2);
print a
print b