[英]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.cycle
和islice
:
>>> 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.