为什么程序中的列表会产生意外的输出?

时间:2015-09-15 07:09:56

标签: python python-3.x

我的python列表有问题。

我打印出列表(工作),一个显示行号(工作)的数字和列表中的项目,每次打印列表时都应该更改(不工作?)

a = ["A", "B", "C", "D", "E"]
b = 0

for x in a:
    while b <= 10:

    print(a, x, b)
    b += 1

我当前的节目输出是

['A', 'B', 'C', 'D', 'E'] A 0
['A', 'B', 'C', 'D', 'E'] A 1
['A', 'B', 'C', 'D', 'E'] A 2
['A', 'B', 'C', 'D', 'E'] A 3

等等

我想要的输出

['A', 'B', 'C', 'D', 'E'] A 0
['A', 'B', 'C', 'D', 'E'] B 1
['A', 'B', 'C', 'D', 'E'] C 2
['A', 'B', 'C', 'D', 'E'] D 3

等等 虽然,当我尝试不同的程序时,它可以很好地工作吗?

list = ["a", "b", "c"]

for a in list:
    print(a)

为什么会发生这种情况,我该如何解决?

2 个答案:

答案 0 :(得分:3)

这是因为你在外部while循环中有for循环(遍历列表的元素。因此,当b变得大于{{1}时,内部while循环才存在},直到那时10的值为x

根据您的意愿,我建议使用itertools.cycle()。示例 -

A

答案 1 :(得分:2)

这里有一个双循环(whilefor),你永远不会将b重置为0.要获得预期的结果,你应该使用enumerate

for idx, x in enumerate(a):
    print(a, x, idx)