如何将新的_值放置在中的列表中的适当位置,以便在Python中对列表进行正确排序

如何将新的_值放置在中的列表中的适当位置,以便在Python中对列表进行正确排序,python,Python,我想创建一个函数,它接受一个列表和一个新的_值。它将把新的_值放在列表中的适当位置。 基本上,如果list=[3,7,8,11]和new_值=7.9,那么输出将是[3,7,7.9,8,11] 我有两个代码如下所示: 代码1: list_number_sorted = [3,7,8,11] def insert_at_asc_place(values,new_value): new_list = [] for number in values:

我想创建一个函数,它接受一个列表和一个新的_值。它将把新的_值放在列表中的适当位置。 基本上,如果list=[3,7,8,11]和new_值=7.9,那么输出将是[3,7,7.9,8,11]

我有两个代码如下所示:

代码1:

    list_number_sorted = [3,7,8,11] 
def insert_at_asc_place(values,new_value):
        new_list = []
        for number in values:
            if new_value < number:
                new_list.append(number)
            elif new_value > number:
                new_list.append(new_value)
        return new_list
    print(insert_at_asc_place(list_number_sorted,7.9))
list\u number\u sorted=[3,7,8,11]
def在_asc_位置插入_(值,新值):
新列表=[]
对于数值中的数字:
如果新的_值<数字:
新列表。追加(编号)
elif新值>编号:
新建\u列表。追加(新\u值)
返回新列表
打印(在asc处插入(列表编号已排序,7.9))
但这给了我输出[7.9,7.9,8,11]

代码2:

    list_number_sorted = [3,7,8,11] 
    def insert_at_asc_place(values,new_value):
        new_list = []
        for number in values:
            if new_value > number:
                new_list.append(number)
            elif new_value < number:
                new_list.append(new_value)
        return new_list
    print(insert_at_asc_place(list_number_sorted,7.9))
list\u number\u sorted=[3,7,8,11]
def在_asc_位置插入_(值,新值):
新列表=[]
对于数值中的数字:
如果新值>编号:
新列表。追加(编号)
elif新值<编号:
新建\u列表。追加(新\u值)
返回新列表
打印(在asc处插入(列表编号已排序,7.9))
但这给了我输出[3,7,7.9,7.9]


不确定如何解决这个问题,感觉我很接近。

你可以通过列表,如果值大于上一个值,小于下一个值,将它插入中间。插入(位置,值)

lista=[3,7,8,11]
新的_值=7.9
对于范围内的索引(len(lista)):

如果NexOyValue > Lista[index ]和NexOyValueP>可以通过列表,如果值大于上一个值,并且小于下一个值,则将其插入到中间。
lista=[3,7,8,11]
新的_值=7.9
对于范围内的索引(len(lista)):

如果new_value>lista[index]和new_value我有两个选项供您选择:

首先,将项目附加到列表中,然后对新列表进行排序:

list\u number\u sorted=[3,7,8,11]
新的_值=7.9
列表编号已排序。追加(新值)
已排序(列表\编号\已排序)
其次,按顺序检查项目,适当插入新值:

list\u number\u sorted=[3,7,8,11]
新的_值=7.9
对于i,枚举中的val(列表编号排序):
如果val>新值:
列表编号已排序。插入(i,新值)
打破
其他:
列表编号已排序。追加(新值)

我有两个选项供您选择:

首先,将项目附加到列表中,然后对新列表进行排序:

list\u number\u sorted=[3,7,8,11]
新的_值=7.9
列表编号已排序。追加(新值)
已排序(列表\编号\已排序)
其次,按顺序检查项目,适当插入新值:

list\u number\u sorted=[3,7,8,11]
新的_值=7.9
对于i,枚举中的val(列表编号排序):
如果val>新值:
列表编号已排序。插入(i,新值)
打破
其他:
列表编号已排序。追加(新值)

每次数字大于/小于
新值时,您都要插入该数字。但是你应该只做一次,所以我添加了一个bool,用来跟踪它

  def insert_at_asc_place(values, new_value):
        new_list = []
        appended = False
        for number in values:
            if number < new_value:
                new_list.append(number)
            elif number >= new_value:
                if not appended:
                    new_list.append(new_value)
                    appended = True
                new_list.append(number)
        return new_list
def insert_在_asc_位置(值、新值):
新列表=[]
追加=错误
对于数值中的数字:
如果数字<新值:
新列表。追加(编号)
elif编号>=新值:
如果没有附加:
新建\u列表。追加(新\u值)
追加=真
新列表。追加(编号)
返回新列表
或者更简单的列表理解:

def insert_at_asc_place(values, new_value):
    return [a for a in values if a < new_value] + [new_value] + [b for b in values if b >= new_value]
def insert_在_asc_位置(值、新值):
返回[a代表a,如果a=new_value]

每次数字大于/小于
新值时,您都要插入该数字。但是你应该只做一次,所以我添加了一个bool,用来跟踪它

  def insert_at_asc_place(values, new_value):
        new_list = []
        appended = False
        for number in values:
            if number < new_value:
                new_list.append(number)
            elif number >= new_value:
                if not appended:
                    new_list.append(new_value)
                    appended = True
                new_list.append(number)
        return new_list
def insert_在_asc_位置(值、新值):
新列表=[]
追加=错误
对于数值中的数字:
如果数字<新值:
新列表。追加(编号)
elif编号>=新值:
如果没有附加:
新建\u列表。追加(新\u值)
追加=真
新列表。追加(编号)
返回新列表
或者更简单的列表理解:

def insert_at_asc_place(values, new_value):
    return [a for a in values if a < new_value] + [new_value] + [b for b in values if b >= new_value]
def insert_在_asc_位置(值、新值):
返回[a代表a,如果a=new_value]

简单有效的方法:

from bisect import insort as insert_at_asc_place

简单有效的方法:

from bisect import insort as insert_at_asc_place