在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
函数,该函数取两个值,然后进行比较并返回适当的值。但我认为我的选择更简单。:-)伟大的然后,他可以帮助我对两个元素进行排序。还应该注意的是,只要您可以使用键
选项进行排序,就应该进行排序。它通常比纯粹的基于比较的排序更快。