Python - 如何在列表中追加整数并进行排序?

时间:2017-12-02 13:18:33

标签: python list

我希望在列表中追加并排序

例如

num_list = [5, 10, 15, 20]
num_list.append(13)
num_list.append(17)

print(num_list)
[5, 10, 13, 15, 17, 20]

3 个答案:

答案 0 :(得分:5)

如果您的列表已经排序,您可以直接插入正确的位置:这会插入并保持列表排在O(n)
(在评论中获得@AntonvBR的帮助)

def insert_sorted(seq, elt):
    """inserts elt at the correct place in seq, to keep it in sorted order
    :param seq: A sorted list
    :param elt: An element comparable to the content of seq
    Effect: mutates the param seq.
    Does not return a result
    """
    idx = 0
    if not seq or elt > seq[-1]:
        seq.append(elt)
    else:
        while elt > seq[idx] and idx < len(seq):
            idx += 1
        seq.insert(idx, elt)

num_list = [5, 10, 15, 20]
insert_sorted(num_list, 21)
num_list

编辑:

您也可以使用模块bisect,并且可以更有效地执行相同操作:(在评论中对@stefan的信用)

import bisect
num_list = [5, 10, 15, 20]
bisect.insort(num_list, 17)

答案 1 :(得分:2)

只需使用bisect.insort()功能:

import bisect

num_list = [5, 10, 15, 20]
bisect.insort(num_list, 13)
bisect.insort(num_list, 17)

print(num_list)
# [5, 10, 13, 15, 17, 20]

最差/平均情况O(n)插入时间复杂且易于使用。

答案 2 :(得分:0)

您可以使用默认的sort方法

    num_list = [5, 10, 15, 20]
    num_list.append(13)
    num_list.append(17)

    num_list.sort()
    print(num_list)