Python 3.x 下面的Lambda函数是什么意思?

Python 3.x 下面的Lambda函数是什么意思?,python-3.x,sorting,lambda,Python 3.x,Sorting,Lambda,我试图理解这个解决方案背后的代码。此函数获取文件名列表并按扩展名排序。例如,扩展名是格式,并将完整的文件名仅包含扩展名,而不包含名称.config。我很难理解lambda函数中的3个参数。他们每个人都做什么 def sort_by_ext(files): return sorted(files,key=lambda x:(bool(i:=x.rfind('.')),x[i+1:],x[:i])) 让我们把它分解一下: 这将为i指定在字符串x中找到句点的最后一个位置。如果文件名基本上为True,

我试图理解这个解决方案背后的代码。此函数获取文件名列表并按扩展名排序。例如,扩展名是格式,并将完整的文件名仅包含扩展名,而不包含名称.config。我很难理解lambda函数中的3个参数。他们每个人都做什么

def sort_by_ext(files):
return sorted(files,key=lambda x:(bool(i:=x.rfind('.')),x[i+1:],x[:i]))
让我们把它分解一下:

这将为i指定在字符串x中找到句点的最后一个位置。如果文件名基本上为True,则最后一个句点不在开头,如果文件名基本上不在开头,则返回False

这将返回文件扩展名,基本上是上一个周期之后的所有内容

这将返回没有文件扩展名的文件名,基本上是上一个句点之前的所有内容

总而言之,代码按以下顺序进行排序:

是否有文件名 文件扩展名 文件名减去文件扩展名
另外,在Python3.6上运行的@Seth Python Tutor似乎认为我发布的上述代码是一个语法错误。您使用哪一版本的python只是为了我的学习,而且我知道代码是正确的?实际上,在没有句点的字符串上测试第一件事。“你不会弄错的。”超级大脑感谢你指出这一点!booli:=x.rfind.'的意义是什么?@larash我正在运行Python 3。8@SethPeace那么,哪些字符串会导致False?Edited:bool运算符未正确使用。code def sort_by_extfiles:return sortedfiles,key=lambda x:x.rfind'.>0,x[x.rfind'.+1:],x[:x.rfind'.]
bool(i := x.rfind('.'))
x[i+1:]
x[:i]