qq_58505721 2021-09-10 19:54 采纳率: 100%
浏览 43
已结题

初学者没看懂,sort是排序我知道,但是这个排序方法是什么意思?

应用 lambda实现对爬取到的秒杀商品信息进行排序。
在IDLE中创建一个名称为 seckillsort.py的文件,然后在该文件中定义一个保存商品信息的列表并
输出,接下来使用列表对象的 sort()方法对列表进行排序,并且在调用sort()方法时,通过 lambda表达
式指定排序规则,最后输出排序后的列表,代码如下:

bookinfo =[('《不一样的卡梅拉(全套)》',22.50,120),('《零基础学 Python》',65.10,79.80),(,《摆渡人》',23.40,36.00),('《福尔摩斯探案全集8册》',22.50,128)]
print('爬取到的商品信息:\n',bookinfo,'ln')
bookinfo.sort(key= lambda x:(x[1],x[1]/x[2]))
#按指定规则进行排序

print('排序后的商品信息:\n', bookinfo)

请问这个sort(key= lambda x:(x[1],x[1]/x[2]))是怎么实现排序的

  • 写回答

2条回答 默认 最新

  • 关注

    sort 方法是先把列表中的每个元素传递给 lambda函数 中的x ,
    lambda函数会返回一个有两个值的元组。
    比如('《不一样的卡梅拉(全套)》',22.50,120) 传递给 lambda函数 中的x ,
    lambda函数会返回 (22.50,0.1875) 这样的元组。

    之后用这些返回的元组来作为排序的数据进行比较,

    两个元组进行比较时是先比较两个元组的第一个值,第一个值如果相同,再比较两个元组的第二个值

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月20日
  • 已采纳回答 9月12日
  • 创建了问题 9月10日

悬赏问题

  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵
  • ¥15 cfx离心泵非稳态计算