理解python中lambda的排序函数

理解python中lambda的排序函数,python,lambda,Python,Lambda,我试图用python对列表列表进行排序。我编写了以下代码: def sort(intervals): if intervals == [] : return [] intervals.sort(key = lambda x:x.start) return intervals a = [[1,3],[8,10],[15,18],[2,6]] print(sort(a)) 我得到以下错误: AttributeError: 'list' object has no at

我试图用python对列表列表进行排序。我编写了以下代码:

def sort(intervals):
    if intervals == [] : return []  
    intervals.sort(key = lambda x:x.start)
    return intervals

a = [[1,3],[8,10],[15,18],[2,6]]
print(sort(a))
我得到以下错误:

AttributeError: 'list' object has no attribute 'start'
请有人解释一下用于排序的lambda函数以及关于上述错误的一些细节。谢谢

您应该使用:

intervals.sort(key = lambda x:x[0])
lambda是一种快速生成函数的方法。比如说,

def getFirst(x):
   return x[0]
等于:

getFirst = lambda x: x[0]
我想你应该看看报纸

PS:请注意,您正在进行就地排序。您还可以使用sorteda,key=lambda x:x[0],如果您不希望,它将返回排序数组的另一个副本。

您应该使用:

intervals.sort(key = lambda x:x[0])
lambda是一种快速生成函数的方法。比如说,

def getFirst(x):
   return x[0]
等于:

getFirst = lambda x: x[0]
我想你应该看看报纸

PS:请注意,您正在进行就地排序。您还可以使用sorteda,key=lambda x:x[0],如果您不希望,它会返回排序数组的另一个副本。

使用lambda会创建一个匿名函数,其中x是参数。键基本上是分配此函数的结果作为排序的基础。可以找到更深入的答案

但看起来你在寻找这样的东西:

intervals.sort(key = lambda x:x[0])
其中x[0]显然是每个列表的第一个元素。

使用lambda创建了一个匿名函数,其中x是参数。键基本上是分配此函数的结果作为排序的基础。可以找到更深入的答案

但看起来你在寻找这样的东西:

intervals.sort(key = lambda x:x[0])

其中x[0]显然是每个列表的第一个元素。

实际上不需要使用lambda函数对列表进行排序。以以下为例:

a = [[1,3],[8,10],[15,18],[2,6],[2,5]]
print (sorted(a))
。。。这将提供以下输出:

[[1, 3], [2, 5], [2, 6], [8, 10], [15, 18]]

。。。因此,它不仅对每个子列表的第一个元素进行排序,而且如果两个子列表的第一个元素相等,则使用后续元素作为键。

实际上不需要使用lambda函数对列表进行排序。以以下为例:

a = [[1,3],[8,10],[15,18],[2,6],[2,5]]
print (sorted(a))
。。。这将提供以下输出:

[[1, 3], [2, 5], [2, 6], [8, 10], [15, 18]]

。。。因此,它不仅对每个子列表的第一个元素进行排序,而且如果两个子列表的第一个元素相等,则使用后续元素作为键。

出现错误消息的原因是,您是基于一个属性进行排序的,该属性不适用于列表开始,也不适用于列表的属性',因此快速修复是,要使用列表的排序方法或使用内置的排序方法,请执行以下操作:

1-使用列表的排序方法:

2-使用内置方法排序:


阅读本文中有关排序列表的更多信息,非常有趣。

出现错误消息的原因是,您正在基于一个属性进行排序,该属性不适用于列表的“开始不是列表的属性”,因此快速修复方法是,使用列表的排序方法或使用内置的排序方法:

1-使用列表的排序方法:

2-使用内置方法排序:


阅读本文中有关排序列表的更多信息,非常有趣。

您想如何对列表进行排序?排序列表:[[1,3]、[2,6]、[8,10]、[15,18]]key=operator.ItemGetter0下面已经发布了该问题的正确答案。我还想指出,如果interval=[]:return return[]这一行是不必要的,因为[].sort==[],所以即使没有这一行,也会返回空列表。您希望如何对列表进行排序?排序后的列表:[[1,3]、[2,6]、[8,10]、[15,18]]key=operator.ItemGetter0下面已经发布了问题的正确答案。我还要注意的是,如果interval=[]:return[]这一行是不必要的,因为[].sort==[],所以即使没有这一行,也会返回空列表。