如何从python的list中提想要的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从python的list中提想要的值相关的知识,希望对你有一定的参考价值。

有一个list=[ '11', '1', '100', '10\n', '11', '2', '200', '20\n', '11', '3', '300', '30\n', '11', '4', '400', '40\n'],其中'11'代表11月,'1','2','3','4'代表1-4号,'100','200','300','400'代表值1,'10\n','20\n','30\n','40\n'代表值2。
我想求值1的平均值,以及值2的平均值,python代码应该如何写?

$ python
Python 2.7.3 (default, Mar 14 2014, 11:57:14) 
[GCC 4.7.2] on linux2
Type "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
>>>


或者在要处理很多月份,并有按月计算的需求时:按月-数据的字典结构组织数据
并设一个计算平均值的函数就更简单了

>>> 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
>>>

参考技术A 我用的是2.6的python,代码如下:
# -*- coding:utf-8 -*-
list=[ '11', '1', '100', '10\n', '11', '2',
'200', '20\n', '11', '3', '300', '30\n', '11', '4', '400', '40\n']
a, b, sum1, sum2 = 0, 0, 0, 0
for i in range(len(list)):
if (i-2)%4 == 0:
sum1 += 1.0
a += int(list[i])
a /= sum1
elif '\n' in list[i]:
sum2 += 1.0
b1 = list[i].split('\n')[0]
b += int(b1)
b /= sum2
print '值1的平均值',a,'\n','值2的平均值',b本回答被提问者采纳

如何拆分每个第N个元素的Python列表

我想要做的很简单,但我找不到怎么做。

  • 从1st元素开始,将每个第4个元素放入新列表中。
  • 重复第2,第3和第4个元素。

从:

list = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b']

至:

list1 = ['1', '5', '9']
list2 = ['2', '6', 'a']
list3 = ['3', '7', 'b']
list4 = ['4', '9']

换句话说,我需要知道如何:

  • 从列表中获取第N个元素(在循环中)
  • 将其存储在新阵列中
  • 重复

以上是关于如何从python的list中提想要的值的主要内容,如果未能解决你的问题,请参考以下文章

当代超吸金的行业“Python工程师”,如何快速从Pytho入门到初级Python工程师?

将Python的库路径添加到系统环境变量PYTHONPATH中,如python安装在C:PYTHO

Pytho怎样自学?

pdb 调试

python如何操作列表-list

python中的list元组如何按照第二维元素排序