我有这个功能正常。但我不太确定它是如何工作的
以下是代码:
def sort_by_last_letter(strings):
def last_letter(s):
return s[-1]
return sorted (strings, key=last_letter)
执行:
sort_by_last_letter(['hello','python','programming'])
它返回结果很好但我不理解本地函数last_letter
如何自动分解字符串列表。是sorted
函数一次发送一个字符串进行排序吗?
答案 0 :(得分:3)
sorted
获取一个列表,我们传递一个可选参数key
来控制如何执行项目之间的比较。传递给key
参数的函数将与列表中的每个项一起调用,函数返回一个值。然后将每次调用的返回值用作比较的基础。
在这里,我们使用last_letter
函数作为key
。每个列表项都传递给last_letter
函数。该函数返回sting的最后一个字母。然后sorted
函数根据这些值进行排序,即每个项目的最后一个字母。
答案 1 :(得分:3)
它的工作方式如下:
执行return sorted(strings, key=last_letter)
后,它会根据strings
对key=last_letter
进行排序,因此sorted
方法会将每个元素从strings
传递到{{} 1}}将返回传递元素(字符串)的最后一个字符。因此排序将基于最后一个char。 last_letter
列表
答案 2 :(得分:0)
通过访问像s[-1]
这样的字符串,它被用作char数组。所以s[-1]
返回字符串的最后一个字母。然后在sorted
函数中将其用作排序键。
答案 3 :(得分:0)
您的key
函数会根据传递列表的每个项返回的值对列表进行排序,如下所示:
+-------+--------+-------------+
| hello | python | programming | # each item in the list you passed into the sort function
+-------+--------+-------------+
| o | n | g | # the resultant value of your key function on these items
+-------+--------+-------------+