簡體   English   中英

為什么程序中的列表會給出意外的輸出?

[英]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

您在這里有一個雙循環( whilefor內部)並且您永遠不會將b重置為 0。要獲得您預期的結果,您應該使用enumerate

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM