为了账号安全,请及时绑定邮箱和手机立即绑定

关于Python类的问题

关于Python类的问题

asdhjhg 2017-03-11 21:57:46
class Person(object):     pass p1 = Person() p1.name = 'Bart' p2 = Person() p2.name = 'Adam' p3 = Person() p3.name = 'Lisa' L1 = [p1, p2, p3] L2 = sorted(L1,key=lambda p : p.name ) #这里为什么要加上key=??? print L2[0].name print L2[1].name print L2[2].name
查看完整描述

1 回答

?
kngines

TA贡献10条经验 获得超2个赞

sorted(data, cmp=None, key=None, reverse=False) 

key 是带一个参数的函数, 用来为每个元素提取比较值. 默认为 None, 即直接比较每个元素.

(1)lambda只是一个表达式,函数体比def简单很多。

(2)lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

(3)lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

PS:lambda的使用 使 把L1中的name循环赋值给 key的过程简写


查看完整回答
反对 回复 2017-03-12
  • asdhjhg
    asdhjhg
    lambda为匿名函数,带p参数,执行p.name。带入到sorted高阶函数反复作用L,然后得到一个新的L。不是这样吗?而且我自己测试了好像sorted用lambda很多情况都报错。。。比如说print sorted(lambda p : p.upper() ,['W','v','g','l','O','p']) ,请指教啊?
  • kngines
    kngines
    你这个语法写错了啊,print sorted(['W','v','g','l','O','p'],key=lambda p : p.upper()) 你看下sorted的定义,help(sorted)
  • 1 回答
  • 1 关注
  • 1380 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信