我是Python的新手并且有一个数字列表。例如
5,10,32,35,64,76,23,53...
。
我使用this post中的代码将它们分为四个(5,10,32,35
,64,76,23,53
等。)。
def group_iter(iterator, n=2, strict=False):
""" Transforms a sequence of values into a sequence of n-tuples.
e.g. [1, 2, 3, 4, ...] => [(1, 2), (3, 4), ...] (when n == 2)
If strict, then it will raise ValueError if there is a group of fewer
than n items at the end of the sequence. """
accumulator = []
for item in iterator:
accumulator.append(item)
if len(accumulator) == n: # tested as fast as separate counter
yield tuple(accumulator)
accumulator = [] # tested faster than accumulator[:] = []
# and tested as fast as re-using one list object
if strict and len(accumulator) != 0:
raise ValueError("Leftover values")
如何访问各个阵列以便我可以对它们执行功能。例如,我想获得每个组的第一个值的平均值(例如,我的示例数字中的5 and 64
)。
答案 0 :(得分:2)
假设您有以下元组元组:
a=((5,10,32,35), (64,76,23,53))
要访问每个元组的第一个元素,请使用for循环:
for i in a:
print i[0]
计算第一个值的平均值:
elements=[i[0] for i in a]
avg=sum(elements)/float(len(elements))
答案 1 :(得分:1)
好的,每次迭代时,这是{{1}个四元组的元组。因此,将整个事物转换为列表:
yield
然后你会得到一个元组列表:
L = list(group_iter(your_list, n=4))
你可以通过这种方式获得每个元组中的第一个项目:
>>> L
[(5, 10, 32, 35), (64, 76, 23, 53), ...]
(当然还有其他方法。)
答案 2 :(得分:1)
你已经创建了一个元组元组,元组列表,列表列表,或列表元组,或者其他......
您可以直接访问任何嵌套列表中的任何元素:
toplist[x][y] # yields the yth element of the xth nested list
您还可以通过迭代顶部结构来访问嵌套结构:
for list in lists:
print list[y]
答案 3 :(得分:1)
你的应用程序可能有点过分,但你应该看看我的库,熊猫。使用GroupBy功能,这样的东西非常简单:
http://pandas.sourceforge.net/groupby.html
要做一次4件事,你需要计算一个bucketing数组:
import numpy as np
bucket_size = 4
n = len(your_list)
buckets = np.arange(n) // bucket_size
然后它就像:
一样简单data.groupby(buckets).mean()