在python中对列表中的元组进行排序

在python中对列表中的元组进行排序,python,list,sorting,tuples,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提前:)就这么简单 list01 = (['a','b','c'],['b','a','d'],['d','e',

我想知道是否有任何简单的方法可以在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提前:)

就这么简单

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

print(sorted(map(sorted,list01)))
就这么简单

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

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

您可以改用生成器:

>>> 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'])
顺便说一句,地图速度更快;)

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


您可以改用生成器:

>>> 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'])
顺便说一句,地图速度更快;)

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


顺便说一句,它是列表的元组,反之亦然。也就是说:这里的列表中没有元组。在元组中有列表<代码>[]围绕一个列表
()
环绕一个元组。顺便说一句。它是列表的元组,而不是列表的元组。也就是说:这里的列表中没有元组。在元组中有列表<代码>[]围绕一个列表<代码>()环绕一个元组。就地排序不必创建新元组。在我的测试中速度更快(虽然它确实创建了一个新列表,但并没有填充它):
[item.sort()如果为False,则用于list01中的item]
-每个循环大约0.45 us;)在我的系统中,
map
版本稍微慢一点,
排序的
版本明显快一点,因此速度差只有40%左右,而不是您报告的95%左右。当然,使用丑陋的
if 0
而不是
if False
会稍微降低一点,因为不必查找名称
False
。是的,这就是用Python进行微优化的方式(但如果这很重要,为什么不使用C呢?)。如果它们很少,我会使用最短/更漂亮/可读性最好的一个,如果它们很多,我可能会使用Cython;)就地排序不必创建新的元组。在我的测试中速度更快(虽然它确实创建了一个新列表,但并没有填充它):
[item.sort()如果为False,则用于list01中的item]
-每个循环大约0.45 us;)在我的系统中,
map
版本稍微慢一点,
排序的
版本明显快一点,因此速度差只有40%左右,而不是您报告的95%左右。当然,使用丑陋的
if 0
而不是
if False
会稍微降低一点,因为不必查找名称
False
。是的,这就是用Python进行微优化的方式(但如果这很重要,为什么不使用C呢?)。如果它们很少,我会使用最短/更漂亮/可读性最好的一个,如果它们很多,我可能会使用Cython;)
In [120]: timeit [item.sort() for item in list01 if False]
1000000 loops, best of 3: 490 ns per loop