如何在循环之间切换?

时间:2016-08-08 17:54:41

标签: python list for-loop while-loop

我有一个生成两个列表的程序。我想从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

3 个答案:

答案 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