关于sorted函数的key

关于sorted函数的key

http://img1.sycdn.imooc.com//climg/5eaee3ee0899c4f419100950.jpg想问下为什么这个结果不是 -1,1,3,5呢?不应该是排序的吗?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好:

因为本题中Key是sorted函数中的参数,key起到排序时设置排序规则的作用,导致该题结果是根据0,1即False与True 进行排序

例如当该函数中没有key是根据大小排序:

http://img1.sycdn.imooc.com//climg/5eb3f4eb09fe775a08200528.jpg

如果我的回答帮助了同学,欢迎采纳!祝同学学习愉快~~~


好帮手慕元宝 2020-05-06 13:40:01

同学你好!

1 sorted([-1,1,5,3], key=lambda x:x>0 )的工作原理是:对[-1,1,5,3]列表中的每一个元素计算x>0的结果。对于[-1,1,5,3]列表,-1>0结果返回False,1>0结果返回True,5>0结果返True,3>0结果返回True 执行完lambda表达式后返回的列表等价于[False,True,True,True]

2 python3由语言本身保证True转化为int型时总是为1,而False总是为0,则列表又等价于

[0,1,1,1]。可以简单将此列表中的数字看成是变量名,第一个1对应原始列表的-1,第二个1对应原始列表的1,以此类推。此时sorted函数将对此列表进行排序。结果为[0,1,1,1]。

3 最终的结果是按照[0,1,1,1]所对应的原始列表中的数返回的,即[-1,1,5,3]。

如果我的回答解决了同学的疑惑,欢迎采纳!祝同学学习愉快~~~

  • 提问者 wxywizard #1
    我还是不明白,那这么解释等于sorted没有体现出排序的功能
    2020-05-06 14:10:33
  • 提问者 wxywizard #2
    或者说,sorted的排序只用0,1区分,而不用大小区分吗?
    2020-05-06 14:11:27
  • 提问者 wxywizard #3
    老师,还能再给解答下吗?还是不明白
    2020-05-07 17:33:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师