为了账号安全,请及时绑定邮箱和手机立即绑定

python元组的列表或者列表的列表,如何简单快速计算每个item的指定单元?

python元组的列表或者列表的列表,如何简单快速计算每个item的指定单元?

偶然的你 2019-04-10 20:49:26
说的有点绕口,举个经常调用的例子:对如下元组的list排序:students=[('john','A',15),('jane','B',12),('dave','B',10)]使用lambda函数:sorted(students,key=lambdastudent:student[2])或者itemgetter:sorted(students,key=operator.itemgetter(2))很简洁,一句话。但是是建立在函数支持这样指定key的接口。那假如我想将所有成绩求个平均值?提取所有人名打印出去?有没有比较简洁有效的写法?感觉循环遍历访问总是有点不爽...
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

题主不想写所谓的循环大概是指不想写显示的forwhile循环遍历吧。
处理一些序列,除了迭代和递归,也没有别的方法了吧。
不想用显示的for循环,写成一句话可以使用列表解析,或者使用map,filter,reduces函数式函数,或者两者配合使用
pythonIn[1]:students=[('john','A',15),('jane','B',12),('dave','B',10)]
In[2]:map(lambdat:t[0],students)
Out[2]:['john','jane','dave']
In[3]:reduce(lambdax,y:x+y,map(lambdat:t[-1],students))/float(len(students))
Out[3]:12.333333333333334
                            
查看完整回答
反对 回复 2019-04-10
?
莫回无

TA贡献1865条经验 获得超7个赞

试试列表解析式?
例如说提取所有人名
>>>students=[('john','A',15),('jane','B',12),('dave','B',10)]
>>>names=[i[0]foriinstudents]
>>>names
['john','jane','dave']
求平均值
>>>students=[('john','A',15),('jane','B',12),('dave','B',10)]
>>>score=sum([i[2]foriinstudents])
>>>score
37
>>>score/len(students)
12.333333333333334
                            
查看完整回答
反对 回复 2019-04-10
  • 2 回答
  • 0 关注
  • 473 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信