在python中的列表中排序元组

时间:2010-12-12 11:34:51

标签: python list sorting tuples

我想知道是否有任何简单的方法可以在python中对列表中的元组进行排序,例如,如果我有一个列表:

list01 = ([a,b,c],[b,a,d],[d,e,c],[a,f,d])

我整理了它,我会得到:

([a,b,c],[a,b,d],[c,d,e],[a,d,f])?

甚至:

([a,b,c],[a,b,d],[a,d,f],[c,d,e]) 

如果那更容易

提前Thanx:)

3 个答案:

答案 0 :(得分:6)

>>> list01 = (['a','b','c'],['b','a','d'],['d','e','c'],['a','f','d'])
>>> map(sorted, list01)
[['a', 'b', 'c'], ['a', 'b', 'd'], ['c', 'd', 'e'], ['a', 'd', 'f']]
>>> sorted(map(sorted, list01))
[['a', 'b', 'c'], ['a', 'b', 'd'], ['a', 'd', 'f'], ['c', 'd', 'e']]

答案 1 :(得分:2)

简单......

list01 = (['a','b','c'],['b','a','d'],['d','e','c'],['a','f','d'])

print(sorted(map(sorted,list01)))

答案 2 :(得分:2)

您可以改用发电机:

>>> list01 = (['a','b','c'],['b','a','d'],['d','e','c'],['a','f','d'])
>>> tuple((sorted(item) for item in list01))
(['a', 'b', 'c'], ['a', 'b', 'd'], ['c', 'd', 'e'], ['a', 'd', 'f'])

地图更快,顺便说一下。 ;)

In [48]: timeit tuple(map(sorted, list01))
100000 loops, best of 3: 3.71 us per loop

In [49]: timeit tuple((sorted(item) for item in list01))
100000 loops, best of 3: 7.26 us per loop

编辑:就地排序更快(感谢Karl):

In [120]: timeit [item.sort() for item in list01 if False]
1000000 loops, best of 3: 490 ns per loop