Skip to main content
 首页 » 编程设计

python之为什么程序中的列表会给出意外的输出

2025年05月04日36freeliver54

我的 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) 

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

请您参考如下方法:

那是因为你在外层 for 循环中有 while 循环(迭代列表的元素。所以内层 while 循环只在 b 变成大于10,到那时x的值为A。

对于你想要的,我建议使用 itertools.cycle() .示例 -

>>> a = ["A", "B", "C", "D", "E"] 
>>> 
>>> b = 0 
>>> import itertools 
>>> acycle = itertools.cycle(a) 
>>> for i in range(11): 
...     print(a,next(acycle),i) 
... 
['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 
['A', 'B', 'C', 'D', 'E'] E 4 
['A', 'B', 'C', 'D', 'E'] A 5 
['A', 'B', 'C', 'D', 'E'] B 6 
['A', 'B', 'C', 'D', 'E'] C 7 
['A', 'B', 'C', 'D', 'E'] D 8 
['A', 'B', 'C', 'D', 'E'] E 9 
['A', 'B', 'C', 'D', 'E'] A 10