如何对列表中的特定元素进行排序?

时间:2011-08-02 07:05:12

标签: python algorithm list sorting range

假设我有一个列表,

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

我希望从第二个元素3到结尾订购它。

我以为我能做到:

lst[1:].sort()

但是,这不起作用。

我该怎么做?

5 个答案:

答案 0 :(得分:13)

lst = lst[0:1] + sorted(lst[1:])

答案 1 :(得分:7)

lst = [5, 3, 5, 1, 4, 7]
lst[1:] = sorted(lst[1:])
print(lst) # prints [5, 1, 3, 4, 5, 7]

答案 2 :(得分:1)

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]

答案 3 :(得分:0)

您可以使用以下代码:

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)

答案 4 :(得分:0)

最好在切片内完成。

>>> lst = [5, 3, 5, 1, 4, 7]
>>> lst[1:]=sorted(lst[1:])
>>> lst
[5, 1, 3, 4, 5, 7]