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