itertools python模塊爲迭代器實現了一些基本構建塊。正如他們所說,「他們形成了一個迭代代數」。我期待着,但是我找不到使用模塊進行下面迭代的簡潔方法。鑑於有序實數列表,例如遍歷n個連續列表元素(重疊)
a = [1.0,1.5,2.0,2.5,3.0]
...返回一個新的列表(或者只是想迭代)一些n
值分組,說2
b = [(1.0,1.5),(1.5,2.0),(2.0,2.5),(2.5,3.0)]
,我發現這樣做的方式這是如下。首先一分爲二的名單,埃文斯和賠率指數:
even, odds = a[::2], a[1::2]
進而構建新的列表:
b = [(even, odd) for even, odd in zip(evens, odds)]
b = sorted(b + [(odd, even) for even, odd in zip(evens[1:], odds)])
從本質上講,它類似於一個移動平均值。
有沒有一個簡潔的方式做到這一點(有或沒有itertools)?
timestamp event
47.8 1a
60.5 1b
67.4 2a
74.5 2b
78.5 1a
82.2 1b
89.5 2a
95.3 2b
101.7 1a
110.2 1b
121.9 2a
127.1 2b
...
此代碼是:
PS:
應用
想象a
列表作爲設定一些事件的時間戳的實驗過程中發生用於根據不同的時間窗口來分割這些事件。現在我對2
連續事件之間的數據感興趣; 'n> 2'將僅用於探索目的。
@glibdud:啊,你說得對。單T恤仍然包裹在一個元素元組中。 – user2357112