Разделение списка в Python - PullRequest
2 голосов
/ 24 марта 2010

Эй, я новичок в 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 ]

3 голосов
/ 24 марта 2010

Использование [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) в худшем случае - только для отфильтрованных значений.

3 голосов
/ 24 марта 2010
>>> 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...