python 3 如何提取list中值
1个回答
展开全部
$ pythonPython 2.7.3 (default, Mar 14 2014, 11:57:14) [GCC 4.7.2] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> lst=[... '11', '1', '100', '10\n',... '11', '2', '200', '20\n',... '11', '3', '300', '30\n',... '11', '4', '400', '40\n']>>> # 第一步:将数据组织成方便使用的结构>>> data = [... map(int, lst[i*4:(i+1)*4])... for i in xrange(len(lst)/4)... ]>>> data[[11, 1, 100, 10], [11, 2, 200, 20], [11, 3, 300, 30], [11, 4, 400, 40]]>>> # 第二步就直接简单地计算好了>>> 1. * sum([x[2] for x in data]) / len(data)250.0>>> 1. * sum([x[3] for x in data]) / len(data)25.0>>>
或者在要处理很多月份,并有按月计算的需求时:按月-数据的字典结构组织数据并设一个计算平均值的函数就更简单了
123456789101112131415161718192021222324
>>> lst=[... '11', '1', '100', '10\n',... '11', '2', '200', '20\n',... '11', '3', '300', '30\n',... '11', '4', '400', '40\n',... '12', '1', '120', '12\n',... '12', '2', '230', '23\n',... '12', '3', '340', '34\n',... '12', '4', '450', '45\n',... ]>>> >>> data = {}>>> for x in [... map(int, lst[i*4:(i+1)*4])... for i in xrange(len(lst)/4)... ]:... data.setdefault(x[0], []).append(x[1:])... >>> def avg(serial):... return 1. * sum(serial) / len(serial)... >>> avg([x[1] for x in data[12]]) # 计算12月的第二个数据的平均值285.0>>>
或者在要处理很多月份,并有按月计算的需求时:按月-数据的字典结构组织数据并设一个计算平均值的函数就更简单了
123456789101112131415161718192021222324
>>> lst=[... '11', '1', '100', '10\n',... '11', '2', '200', '20\n',... '11', '3', '300', '30\n',... '11', '4', '400', '40\n',... '12', '1', '120', '12\n',... '12', '2', '230', '23\n',... '12', '3', '340', '34\n',... '12', '4', '450', '45\n',... ]>>> >>> data = {}>>> for x in [... map(int, lst[i*4:(i+1)*4])... for i in xrange(len(lst)/4)... ]:... data.setdefault(x[0], []).append(x[1:])... >>> def avg(serial):... return 1. * sum(serial) / len(serial)... >>> avg([x[1] for x in data[12]]) # 计算12月的第二个数据的平均值285.0>>>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询