列表和元组的序列问题

  原题: 一个列表由四个元组组成,每个元组都是四个数字组成,现在要求对这个列表排序,排序规则是按照每个元组的第二个元素排序

  这里的题眼是:按照每个元组的第二个元素排序  ,所以我们应该引用匿名函数 lambda

li=[(2,3,4,5),(321,123,44,99),(45,12,43,66,127),(9,999,870,65)]
li.sort(key=lambda x:x[1])  #排列第二个元素,元组被x所接受,参数按照下标索引取值
print(li)

  如果只是采用 li.sort() 函数将会从左到右比较大小 类似我们C 或Java 中的冒泡排序  e.g. 22与123 比较,由于2>1 ,所以 123 排在22 前面

  key 是固定的,并非自定义。

lambda 函数

定义:是指没有名字的函数,应用在需要一个函数但是又不想费神命名这个函数的场合

        通常情况下,这样的函数只使用一次

注意事项: 使用lambda 表达式时,可以有多的参数,参数之间用逗号分隔,但是表达式只能有一个,即只能返回一个值 ,而且不可以出现其他非表达式语句(如 for或while)

其实 lambda 函数的首要用途是指定短小的回调函数 e.g. 假设采用爬虫技术爬取信息后对商品信息后的排序

bookinfo=[('《不一样的卡梅拉》',22.50,120),('《零基础python》',65.10,79.80),('《摆渡人》',23.40,36.00),('《雅思写作大全》',47.50,128)]

print('爬取的到的商品信息: \n',bookinfo,'\n')
bookinfo.sort(key=lambda x:(x[1],x[1]/x[2]))
print('排序后的商品信息:\n',bookinfo)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值