嗨im新的python。你如何通過排序鍵的相對值得到列表的一部分。在python中分割列表
例如...
list = [11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10] list.sort() newList = list.split("all numbers that are over 13") assert newList == [14,15,16]
嗨im新的python。你如何通過排序鍵的相對值得到列表的一部分。在python中分割列表
例如...
list = [11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10] list.sort() newList = list.split("all numbers that are over 13") assert newList == [14,15,16]
>>> l = [11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10]
>>> sorted(x for x in l if x > 13)
[14, 15, 16]
或過濾器(會稍微慢一點,如果你有,因爲拉姆達的大名單,)
>>> sorted(filter(lambda x: x > 13, l))
[14, 15, 16]
使用[item for item in newList if item > 13]
。
這是一個很好的機會,可以用發生器表達式替代,它可以過濾而不是將整個列表存儲在內存中。
您可能也有興趣在改變代碼只是有點像
all_numbers = [11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_sorted_numbers = sorted(number for number in all_numbers if number > 13)
執行分揀的最壞情況爲O(n log n)的操作僅在過濾後的值。
謝謝,這非常有用 – mglmnc 2010-03-24 04:08:43
在'filter'和'map'中使用'lambda'是愚蠢的。列表理解形式更好地滿足了這一點。 – 2010-03-24 04:10:35
請注意,結果中的數字與原始列表的順序相同。如果你需要對它們進行排序,你應該使用'sorted(x for x in l if x> 13)' – 2010-03-24 04:21:05
謝謝@gnibbler,增加 – YOU 2010-03-24 04:23:56