在python中拆分列表

时间:2010-03-24 03:59:49

标签: 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]

2 个答案:

答案 0 :(得分:3)

>>> 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]

或使用过滤器(如果因为lambda而有大列表,会慢一点)

>>> sorted(filter(lambda x: x > 13, l))
[14, 15, 16]

答案 1 :(得分:3)

使用[item for item in newList if item > 13]

有一个很好的机会可以用生成器表达式(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)操作 - 仅对过滤后的值进行操作。