[英]Why does list in program give an unexpected output?
我在 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
您在這里有一個雙循環( while
在for
內部)並且您永遠不會將b
重置為 0。要獲得您預期的結果,您應該使用enumerate
:
for idx, x in enumerate(a):
print(a, x, idx)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.