Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中对列表进行排序_Python_List_Sorting - Fatal编程技术网

在Python中对列表进行排序

在Python中对列表进行排序,python,list,sorting,Python,List,Sorting,c2现在是: c2=[] row1=[1,22,53] row2=[14,25,46] row3=[7,8,9] c2.append(row2) c2.append(row1) c2.append(row3) 如何对c2进行排序,例如: [[14, 25, 46], [1, 22, 53], [7, 8, 9]] def sort_key(row): return row[2] c2.sort(key = sort_key) 结果将是: for row in c2: sort

c2
现在是:

c2=[]
row1=[1,22,53]
row2=[14,25,46]
row3=[7,8,9]

c2.append(row2)
c2.append(row1)
c2.append(row3)
如何对
c2
进行排序,例如:

[[14, 25, 46], [1, 22, 53], [7, 8, 9]]
def sort_key(row):
    return row[2]

c2.sort(key = sort_key)
结果将是:

for row in c2:

sort on row[2]
c2.sort(key = lambda row: row[2])

另一个问题是如何首先按行[2]进行排序,并在按行[1]设置的范围内进行排序。您想要的示例似乎表明您希望按列表中的最后一个索引进行排序,这可以通过以下方法完成:

[[7,8,9],[14,25,46],[1,22,53]]
指定一个参数的函数,该参数用于从每个列表元素提取比较键。因此,我们可以创建一个简单的
lambda
,返回排序中要使用的每行的最后一个元素:

sorted_c2 = sorted(c2, lambda l1, l2: l1[-1] - l2[-1])
当您想要创建这样一个简单的一次性函数时,它非常方便。不使用
lambda
的等效代码为:

for row in c2:

sort on row[2]
c2.sort(key = lambda row: row[2])
如果您想对更多条目进行排序,只需让
函数返回一个元组,其中包含您希望按重要性排序的值。例如:

[[14, 25, 46], [1, 22, 53], [7, 8, 9]]
def sort_key(row):
    return row[2]

c2.sort(key = sort_key)
或:


你必须更具体地说明你想要你的东西如何分类。我看到内部列表中元素的顺序保持不变,但列表本身的顺序发生了变化。解释一下你的逻辑。对不起,我的数据有错误,请检查一下now@I__:用于定义快速内联函数。非常感谢。另一个问题是如何首先按行[2]排序,在按行[1]设置的范围内,还可以执行类似于
import操作符的操作;c2.sort(key=operator.itemgetter(2))
c2.sort(key=operator.itemgetter(2,1))
c2.sort(key=operator.itemgetter(2,1,0))
。这显然比使用lambda表达式快一点。另一个问题是如何首先按第[2]行排序,并在第[1]行设置的范围内进行排序。mipadi,对不起,你能解释一下你的答案吗?看起来很复杂,两者都可以。mipdadi正在使用我的另一个选项。他没有指定返回单个排序值的
key
函数,而是使用
sort
函数,该函数取两个值,然后进行比较并返回适当的值。但我认为我的选择更简单。:-)伟大的然后,他可以帮助我对两个元素进行排序。还应该注意的是,只要您可以使用
选项进行排序,就应该进行排序。它通常比纯粹的基于比较的排序更快。