Python中如何根据子列表首元素对列表内子列表重排
按子列表首元素对列表升序排序
我有一个包含多个子列表的列表A,希望依据每个子列表的第一个元素对该列表进行升序重排。
现有代码
A=[[27, 31, 32, 36], [30, 34, 35, 39], [28, 32, 33, 37], [29, 33, 34, 38]] C=[] for i in range(0,len(A)): B=A[i][0] C.append(B) C.sort() print(C)
当前输出
[27, 28, 29, 30]
期望输出
[[27, 31, 32, 36], [28, 32, 33, 37], [29, 33, 34, 38], [30, 34, 35, 39]]
问题分析
原代码仅提取了每个子列表的首元素并排序,没有将排序后的首元素与原有的子列表关联,因此输出的只是排序后的首元素集合,而非完整的子列表排序结果。
解决方案
直接使用Python内置的排序函数,通过key参数指定排序依据为子列表的第一个元素即可:
方法1:生成新的排序后列表(不修改原列表)
A = [[27, 31, 32, 36], [30, 34, 35, 39], [28, 32, 33, 37], [29, 33, 34, 38]] sorted_A = sorted(A, key=lambda x: x[0]) print(sorted_A)
方法2:直接修改原列表
A = [[27, 31, 32, 36], [30, 34, 35, 39], [28, 32, 33, 37], [29, 33, 34, 38]] A.sort(key=lambda x: x[0]) print(A)
两种方法都能得到期望输出,核心是利用key参数告诉排序函数:按照每个子列表的第一个元素(x[0])进行升序排序。
内容的提问来源于stack exchange,提问作者modishah123
相关产品推荐
相关产品推荐

