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的滑动窗口。 –