嘿,我是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]
答案 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)操作 - 仅对过滤后的值进行操作。