亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python元組的列表或者列表的列表,如何簡單快速計算每個item的指定單元?

python元組的列表或者列表的列表,如何簡單快速計算每個item的指定單元?

郎朗坤 2019-02-20 23:56:33
說的有點繞口,舉個經常調用的例子: 對如下元組的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的接口。 那假如我想將所有成績求個平均值?提取所有人名打印出去? 有沒有比較簡潔有效的寫法?感覺循環遍歷訪問總是有點不爽...
查看完整描述

2 回答

?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

題主不想寫所謂的循環大概是指不想寫顯示的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
查看完整回答
反對 回復 2019-03-01
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

試試列表解析式?

例如說提取所有人名

>>> 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
查看完整回答
反對 回復 2019-03-01
  • 2 回答
  • 0 關注
  • 614 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號