,如果我有一个列表我是,如果有各地的蟒蛇在列表排序元组,例如什么简单的办法疑惑:排序元组在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提前:)
,如果我有一个列表我是,如果有各地的蟒蛇在列表排序元组,例如什么简单的办法疑惑:排序元组在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'])
>>> 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']]
就这么简单......
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'])
地图比较快,顺便说一句。 ;)
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
编辑:到位排序是更快的速度(感谢卡尔):
In [120]: timeit [item.sort() for item in list01 if False]
1000000 loops, best of 3: 490 ns per loop
就地排序不必创建新的元组。在我的测试中甚至更快(尽管它创建了一个新列表,但它没有填充它):'[item.sort()list01中的项目如果为False] - 每个循环大约0.45 us。 ;)在我的系统中,'map'版本稍微慢一些,'sorted'版本的速度要快得多,因此只有大约40%的速度差异,而不是95%左右的报告。 – 2010-12-12 17:51:15
而且,当然,使用丑陋的'if 0'而不是'if False'会削弱一点点,因为不需要查看'False'这个名字。所以是的,这就是你在Python中进行微型优化的方式(但是如果它很重要,为什么不去C呢?)。 – 2010-12-12 17:59:15
我只是试图展示一些例子,它仍然依赖于数据。如果它们中的很少一部分比我使用最短/漂亮/最具可读性的,如果它们中的很多,我可能会使用Cython;) – 2010-12-17 20:48:30
顺便说一句。它是一个列表元组,反之亦然。 – 2010-12-12 11:42:19
也就是说:这里没有列表中的元组。你有一个元组中的列表。 '[]'环绕一个列表。 '()'包围一个元组。 – 2010-12-12 17:45:23