我想找到一個處理非常大的有序整數列表的最佳方法,例如。python過濾器計算大值列表中的值以創建多個較小的列表
biglist = [45, 34, 2, 78, 7, 9, 10, 33, 78, 51, 99, 24, 88, ... N] where N > 1m
通過讀取每個biglist元素來創建固定長度S(〜= 200)的多個小列表,在元件上施加不同的操作,並且如果滿足條件的標準添加的元素或一個值,以每小單子直到達到S,例如。
x_smallist = []
y_smallist = []
z_smallist = []
count = 0
for i in biglist:
b = i/5
a = b * 2
c = a^3 + b
if b > 7 and b < 69:
x_smallist.append(i)
y_smallist.append(a)
z_smallist.append(b)
count += 1
if count > S:
break
該示例和功能僅用於說明。由於biglist很大,每個元素都被讀取和操作,直到達到S,並且該過程被重複數千次,我想避免for循環。如何通過列表理解(或映射或過濾器)來實現?
如果你正在做這麼多的處理每一個元素,一個),你將無法表達它在一個列表理解,和b)列表理解的時間節省將通過真正相形見絀無論如何你必須做的工作。 –
這最好做爲'for'循環。當你不需要像'a','b'和'count'這樣的中間變量時,列表解析和'過濾器'就是在這裏。我唯一可能的建議是讓元組更加快速,它有一個單元列表,可以將元組附加到:'smallist.append((i,a,b))'。 – agf
似乎是微不足道的prefilter名單。 –