列出本地功能

时间:2016-01-03 21:32:36

标签: python python-2.7 python-3.x

我有这个功能正常。但我不太确定它是如何工作的

以下是代码:

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函数一次发送一个字符串进行排序吗?

4 个答案:

答案 0 :(得分:3)

sorted获取一个列表,我们传递一个可选参数key来控制如何执行项目之间的比较。传递给key参数的函数将与列表中的每个项一起调用,函数返回一个值。然后将每次调用的返回值用作比较的基础。

在这里,我们使用last_letter函数作为key。每个列表项都传递给last_letter函数。该函数返回sting的最后一个字母。然后sorted函数根据这些值进行排序,即每个项目的最后一个字母。

答案 1 :(得分:3)

它的工作方式如下:

执行return sorted(strings, key=last_letter)后,它会根据stringskey=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
+-------+--------+-------------+