Discuss / Python / sorted(一通百通)

sorted(一通百通)

Topic source

英睿都督

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

def by_name(t): return t[0].lower()

def by_score(t): return -t[1]

这个题目看了好久,最后看了下各位大神答案,原来这么简单!可惜我还是理解不了,这是什么逻辑?by_name和by_score是把每个元素当成一个LIST对象,然后通过参数返回一个切片值?然后再用sorted比较L中每个元素姓名进行排列是吗?(PS:万一某个元素中,姓名跟分数位置换了怎么办?) 还有第二题那个'-'号没看懂,虽然不加'-'号排序是由小到大,问题是根据什么确定加了'-'号就变成由大到小了?

冷雪儿_yyf

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

添加<code>-</code>是因为要按照从高到低排序,默认是按照从低到高(想逆序需要添加reverse=True,但是默认的调用已经写好所有就添加负号了 <code>sorted(list,key=fun)</code>list的每个元素都会调用fun,根据每次处理后fun返回的值,生成一个新的list_key,sorted()会根据生成后的list_key排序,其实就是<code>sorted(list_key)</code>


  • 1

Reply