0
在Python 2.7中,我有一個名爲data
的列表,其中有一些元組,由第一個屬性索引。Python按順序訪問切片的片段
data = [('A', 1, 2, 3), ('A', 10, 20, 30), ('A', 100, 200, 300),
('B', 1, 2, 3), ('B', 10, 20, 30),
('C', 15, 25, 30), ('C', 1, 20, 22), ('C', 100, 3, 8)]
有一個功能f()
,將上的任何data
切片工作與第一折射率匹配,例如
f([x[1:] for x in data[:3])
我想在陣列(具有相同的第一索引的元組的組)的每個切片調用f
(按適當順序)和編譯列表中得到的值的列表。
我剛剛開始使用Python。這是我的解決方案,有沒有更好的(更快或更優雅)的方式來做到這一點?
slices = [x for x in xrange(len(data)) if data[x][0] != data[x-1][0]]
result = [f(data[start:end] for start, end in zip([slices[:-1], slices[1:])]
謝謝。
這是不清楚你在這裏試圖達到什麼。你的意思是你想要在每個元組中的每個元組上調用'f()',它們被分組到每個元組的第一個元素上? –
如果您的數據按第一個屬性進行索引,那麼您如何區分As,Bs或Cs? –
'data [x] [0]!= data [x] [ - 1]'在'data'中總是成立。這意味着你基本上在'data'中創建了大小爲2的滑動窗口。 –