,如果我有一個列表我是,如果有各地的蟒蛇在列表排序元組,例如什麼簡單的辦法疑惑:排序元組在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