python 列表 元组 如何选取某个特定的_Python元组列表怎么计算每个item指定单元最快捷方式...

说的有点绕口,举个经常调用的例子:

对如下元组的list排序:students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

使用lambda函数:sorted(students, key=lambda student : student[2])

或者itemgetter:sorted(students, key=operator.itemgetter(2))

很简洁,一句话。但是是建立在函数支持这样指定key的接口。

那假如我想将所有成绩求个平均值?提取所有人名打印出去?

有没有比较简洁有效的写法?感觉循环遍历访问总是有点不爽...

题主不想写所谓的循环大概是指不想写显示的for while循环遍历吧。

处理一些序列,除了迭代和递归,也没有别的方法了吧。

不想用显示的for循环,写成一句话可以使用列表解析,或者使用map,filter,reduces函数式函数,或者两者配合使用pythonIn [1]: students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

In [2]: map(lambda t: t[0], students)

Out[2]: ['john', 'jane', 'dave']

In [3]: reduce(lambda x, y: x + y, map(lambda t: t[-1], students)) / float(len(students))

Out[3]: 12.333333333333334

试试列表解析式?

例如说提取所有人名>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

>>> names = [ i[0] for i in students ]

>>> names

['john', 'jane', 'dave']

求平均值>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

>>> score = sum([ i[2] for i in students ])

>>> score

37

>>> score/len(students)

12.333333333333334

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd18541.html

相关文章 Recommend

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值