如何根据某个位置的int对元组列表进行排序? (没有for循环)
例如。根据每个元组中的第三个元素对l = [(1,5,2),(7,1,4),(1,6,3)]
进行排序?
答案 0 :(得分:2)
您可以使用list.sort
,其关键功能和operator.itemgetter
:
>>> from operator import itemgetter
>>> l = [(1,5,2),(7,1,4),(1,6,3)]
>>> l.sort(key=itemgetter(2))
>>> l
[(1, 5, 2), (1, 6, 3), (7, 1, 4)]
>>>
您还可以使用lambda function代替operator.itemgetter
:
>>> l = [(1,5,2),(7,1,4),(1,6,3)]
>>> l.sort(key=lambda x: x[2])
>>> l
[(1, 5, 2), (1, 6, 3), (7, 1, 4)]
>>>
然而,后者是generally faster。
答案 1 :(得分:2)
您可以使用内置的sorted
内容指定用于对列表进行排序的键:
>>> mylist = sorted([(1,5,2),(7,1,4),(1,6,3)], key = lambda t: t[2])
>>> mylist
[(1, 5, 2), (1, 6, 3), (7, 1, 4)]
>>>