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

说的有点绕口,举个经常调用的例子:
对如下元组的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的接口。
那假如我想将所有成绩求个平均值?提取所有人名打印出去?
有没有比较简洁有效的写法?感觉循环遍历访问总是有点不爽...
偶然的你
浏览 474回答 2
2回答

噜噜哒

题主不想写所谓的循环大概是指不想写显示的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

莫回无

试试列表解析式?例如说提取所有人名>>>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])>>>score37>>>score/len(students)12.333333333333334
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript