Python 局部函数中的列表

Python 局部函数中的列表,python,python-2.7,python-3.x,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如何自动

我有这个功能,工作得很好。但我不太清楚它是如何工作的

代码如下:

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
函数?

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


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

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


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

其工作方式如下:


当执行
返回排序(strings,key=last\u letter)
时,它将根据
key=last\u letter
字符串进行排序,因此
sorted
方法将把
strings
中的每个元素传递到
last\u letter
,这将返回传递的元素(string)的最后一个字符。因此,排序将基于最后一个字符。对于
字符串的每个字符串
列表

其工作方式如下:


当执行
返回排序(strings,key=last\u letter)
时,它将根据
key=last\u letter
字符串进行排序,因此
sorted
方法将把
strings
中的每个元素传递到
last\u letter
,这将返回传递的元素(string)的最后一个字符。因此,排序将基于最后一个字符。通过访问字符串(如
s[-1]
),它被用作字符数组。因此
s[-1]
返回字符串的最后一个字母。然后在
sorted
函数中将其用作排序键。

通过访问类似
s[-1]
的字符串,将其用作字符数组。因此
s[-1]
返回字符串的最后一个字母。然后,它在
排序
函数中用作排序键。

您的
函数根据传递列表的每个项目返回的值对列表进行排序,如下所示:

+-------+--------+-------------+
| 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
+-------+--------+-------------+

您的
函数根据传递列表的每个项目返回的值对列表进行排序,如下所示:

+-------+--------+-------------+
| 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
+-------+--------+-------------+

另一方面,可以不使用本地函数,而是使用
返回排序(strings,key=itemgetter(-1))
。与运算符import itemgetter的
一起
如果在函数中添加
print(s[-1])
,它将变得清晰它看起来像
排序键
参数获取字符串的最后一个元素,然后对结果进行排序。这是一个正确的假设吗?作为旁白,可以省略本地函数,并使用
返回排序(strings,key=itemgetter(-1))
。与运算符import itemgetter的
一起
如果在函数中添加
print(s[-1])
,它将变得清晰它看起来像
排序键
参数获取字符串的最后一个元素,然后对结果进行排序。这是一个正确的假设吗?@PadraicCunningham。。干杯:P@PadraicCunningham .. 干杯:P