Discuss / Python / 练习

练习

Topic source

浅言87780

#1 Created at ... [Delete] [Delete and Lock User]

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

def by_name(t):  

    #t[0]代表姓名列,t[1]代表分数列 

    return t[0].lower()

def by_score(t):

    #默认排列顺序为从低到高t[1], 要使其从高到低,将分数先取负数-t[1]即可

    return -t[1]

L2 = sorted(L, key=by_name)

print(L2)

L2 = sorted(L, key=by_score)

print(L2)

>> def by_name(t):

return t[0] 

和return t[0][0]有什么差别啊?

>>> def by_name(t):

return t[0][0]

>>> L2=sorted(L,key=by_name)

>>> print(L2)

[('Adam', 92), ('Bob', 75), ('Bart', 66), ('Lisa', 88)]

亚当陈杨

#3 Created at ... [Delete] [Delete and Lock User]

同问

张三阀阅

#4 Created at ... [Delete] [Delete and Lock User]

t[0]是名字,t[0][0]是每个名字的首字母。t[0]中Bart在Bob前面,而t[0][0]按照原顺序,Bob在Bart前面。sorted(L,key)的逻辑是把key函数依次作用在L中的每一个元素上,因此定义key函数的时候对象应该是L中的单个元素而不是整个L。


  • 1

Reply