簡體   English   中英

如何多次循環遍歷列表?

[英]How to loop through a list multiple times?

您可以一遍又一遍地遍歷列表(使用包含一個步驟的范圍),直到列表中的所有元素都被循環訪問?

我有以下列表:

result = []
list = ['ba', 'cb', 'dc', 'ed', 'gf', 'jh']

我希望結果(結果)是:

result = ['dc', 'cb', 'ba', 'jh', 'gf', 'ed']

我如何讓它循環遍歷第一個列表,並將每個元素附加到結果列表,從第三個元素開始並使用 5 作為一個步驟,直到所有元素都在結果列表中?

無需多次循環遍歷列表。作為一種更pythonic的方式,您可以使用itertools.cycleislice

>>> from itertools import cycle,islice
>>> li= ['ba', 'cb', 'dc', 'ed', 'gf', 'jh']
>>> sl=islice(cycle(li),2,None,4)
>>> [next(sl) for _ in range(len(li))]
['dc', 'ba', 'gf', 'dc', 'ba', 'gf']

請注意,在您的預期輸出中,步驟是 5 而不是 4.So 如果您使用 5 作為切片步驟,您將獲得預期輸出:

>>> sl=islice(cycle(li),2,None,5)
>>> [next(sl) for _ in range(len(li))]
['dc', 'cb', 'ba', 'jh', 'gf', 'ed']

假設列表的步驟和長度是互質的,您可以執行以下操作:

result = []
list = ['ba', 'cb', 'dc', 'ed', 'gf', 'jh']
start = 2
step = 5
end = start + step*len(list)
for i in range(start, end, step):
    result.append(list[i%len(list)])
print result

結果:

['dc', 'cb', 'ba', 'jh', 'gf', 'ed']

之前發布了一個非常簡單的解決方案,不知道為什么將其刪除:

>>> a = ['ba', 'cb', 'dc', 'ed', 'gf', 'jh']
>>> result = [a[n] for n in range(2, -4, -1)]
>>> result
['dc', 'cb', 'ba', 'jh', 'gf', 'ed']

暫無
暫無

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

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