Как отсортировать определенный диапазон элементов в списке? - PullRequest
3 голосов
/ 02 августа 2011

Предположим, у меня есть список

lst = [5, 3, 5, 1, 4, 7]

, и я хочу, чтобы он был упорядочен от второго элемента до конца.*

lst[1:].sort()

Но это не работает.

Как я могу это сделать?

Ответы [ 5 ]

14 голосов
/ 02 августа 2011
lst = lst[0:1] + sorted(lst[1:])
7 голосов
/ 02 августа 2011
lst = [5, 3, 5, 1, 4, 7]
lst[1:] = sorted(lst[1:])
print(lst) # prints [5, 1, 3, 4, 5, 7]
1 голос
/ 02 августа 2011
so = lambda x, index: x[:index]+sorted(x[index:])

так назовите его так (lst, 1)

In [2]: x = [5, 3, 5, 1, 4, 7]
In [3]: so(lst, 1)
Out[4]: [5, 1, 3, 4, 5, 7]
0 голосов
/ 02 августа 2011

Лучше всего делать это внутри среза.

>>> lst = [5, 3, 5, 1, 4, 7]
>>> lst[1:]=sorted(lst[1:])
>>> lst
[5, 1, 3, 4, 5, 7]
0 голосов
/ 02 августа 2011

Вы можете использовать следующий код:

lst = [5, 3, 5, 1, 4, 7]

searchValue = 3

def get_sorted(lVals, searchVal=None, startIndex=None):
    if startIndex and startIndex < len(lVals):
        return lVals[:startIndex] + sorted(lVals[startIndex:])         
    elif searchVal and searchVal in lVals:
        valueIndex = lst.index(searchValue)
        return lVals[:valueIndex] + sorted(lVals[valueIndex:])
    return sorted(lVals)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...