我有一個包含480個元組的列表。如何遍歷python列表中的每六個元組
list = [(7,4), (6, 1), (4, 8)....]
我需要把前六個元組,並把它們放在一個臨時變量來執行它們的一些評估。那麼我需要把下面的六個元組放在臨時變量中,然後進行相同的評估,然後再選擇下面的六個元組等等。
我不知道如何在循環中設置它 - 如何抓取六個元組,然後從列表中取下六個元組?還是有更簡單的方法來設置元組的數據結構來做到這一點?
我有一個包含480個元組的列表。如何遍歷python列表中的每六個元組
list = [(7,4), (6, 1), (4, 8)....]
我需要把前六個元組,並把它們放在一個臨時變量來執行它們的一些評估。那麼我需要把下面的六個元組放在臨時變量中,然後進行相同的評估,然後再選擇下面的六個元組等等。
我不知道如何在循環中設置它 - 如何抓取六個元組,然後從列表中取下六個元組?還是有更簡單的方法來設置元組的數據結構來做到這一點?
from itertools import izip_longest
groups_of_six = izip_longest(*[iter(my_list_of_tuples)]*6)
for a_group in groups_of_six:
do_some_processing_on(a_group)
這就是我喜歡的方式來做到這一點:P
和自發電機你是不是循環遍歷...
哇,這是討厭和美麗的同時。我不知道它是否「保證」能夠實現對Python的實現,因爲理論上'izip'可以一次獲取多個項目並緩存它們。但我想CPython的實現是這裏的參考。 –
,你可以簡單地使用切片:
while l:
a,l=l[:6],l[6:]
doSomethingWith(a)
當然,但名單隻有480長,我認爲這是非常可讀的人(我認爲)新的python – fredtantini
哦,我沒有看到長度限制。在這種情況下,這很好 –
這將返回一個列表的列表,每個子表由六個元組:
[my_list[i:i+6] for i in range(0, len(my_list), 6)]
注意,如果你正在使用Python 2,你應該使用xrange
而不是range
,所以你不必連續迭代。
你可以考慮使用for循環來照顧它。
myList = [(7,4), (6, 1), (4, 8), (4, 9), (3, 4), (9, 2), (7, 3)]
newList = []
for x in xrange(len(myList)):
if x % 6 == 0:
newList.append(myList[x])
print newList
有一些簡短的方法可以做到這一點,但我認爲我的閱讀能力很好,很整潔。 你也可以更換任何東西newList.append線,你需要(例如某種功能)
你可以使用['itertools grouper' recipe](https://docs.python.org/2/library/itertools.html#recipes) – jonrsharpe
bah @jonrsharpe那是我的答案:P雖然固體:)這個問題一直出現,我喜歡這個食譜! –