Python 添加到列表时使用排序函数的替代方法?

Python 添加到列表时使用排序函数的替代方法?,python,list,sorting,Python,List,Sorting,我想在列表中按字母顺序插入一个单词。最初,我会将要添加的单词附加到列表的末尾,然后对列表进行排序,但不允许使用sort()函数 有没有办法通过函数来实现这一点?尝试这样做: array = ["asdf", "bsdf", "kkkk", "zssdd"] insertion_string = "zzat" i = 0 for element in array: if insertion_string < element: array.insert(i, insertion_s

我想在列表中按字母顺序插入一个单词。最初,我会将要添加的单词附加到列表的末尾,然后对列表进行排序,但不允许使用
sort()
函数

有没有办法通过函数来实现这一点?

尝试这样做:

array = ["asdf", "bsdf", "kkkk", "zssdd"]
insertion_string = "zzat"
i = 0
for element in array:
  if insertion_string < element:
    array.insert(i, insertion_string)
    break
  i += 1
# if it is last one
if not insertion_string in array:
  array.append(insertion_string)
print (array )
array=[“asdf”、“bsdf”、“KKK”、“zssdd”]
插入字符串=“zzat”
i=0
对于数组中的元素:
如果插入字符串<元素:
array.insert(i,插入\u字符串)
打破
i+=1
#如果是最后一个
如果未在数组中插入\u字符串:
array.append(插入\u字符串)
打印(数组)
Repl.it=

尝试这样做:

array = ["asdf", "bsdf", "kkkk", "zssdd"]
insertion_string = "zzat"
i = 0
for element in array:
  if insertion_string < element:
    array.insert(i, insertion_string)
    break
  i += 1
# if it is last one
if not insertion_string in array:
  array.append(insertion_string)
print (array )
array=[“asdf”、“bsdf”、“KKK”、“zssdd”]
插入字符串=“zzat”
i=0
对于数组中的元素:
如果插入字符串<元素:
array.insert(i,插入\u字符串)
打破
i+=1
#如果是最后一个
如果未在数组中插入\u字符串:
array.append(插入\u字符串)
打印(数组)

Repl.it=

基于@SheshankS的答案。一个为您执行此操作的函数:

def insert(item, _list):
    for index, element in enumerate(_list):
        if item < element: # in python, this automatically compares alphabetical precedence.
            _list.insert(index, item)
            return # exit out of the function since we already inserted
    # if the item was not inserted, it must have the lowest precedence, so just append it
    _list.append(item)

将实际更改
someList
,而不仅仅返回新值。

基于@SheshankS的答案。一个为您执行此操作的函数:

def insert(item, _list):
    for index, element in enumerate(_list):
        if item < element: # in python, this automatically compares alphabetical precedence.
            _list.insert(index, item)
            return # exit out of the function since we already inserted
    # if the item was not inserted, it must have the lowest precedence, so just append it
    _list.append(item)

将实际更改someList,而不是仅返回新值。

您没有说明是否允许使用第三方模块,也没有说明速度是否是一个因素。如果您想快速将新项目添加到排序列表中,并且允许您使用模块,请使用中的
SortedList
类。这是Python的许多发行版中包含的一个模块,例如

这将是简单而快速的,即使对于大型列表也是如此

someList = SortedList(["a", "b", "d"])
someList.add("c")
print(someList)
从那打印出来的是

SortedList(['a', 'b', 'c', 'd'])

您没有说是否允许使用第三方模块,也没有说速度是否是一个因素。如果您想快速将新项目添加到排序列表中,并且允许您使用模块,请使用中的
SortedList
类。这是Python的许多发行版中包含的一个模块,例如

这将是简单而快速的,即使对于大型列表也是如此

someList = SortedList(["a", "b", "d"])
someList.add("c")
print(someList)
从那打印出来的是

SortedList(['a', 'b', 'c', 'd'])

如果允许使用标准库,则可以使用
对分

>>> import bisect
>>> lst = list('abcefg')
>>> for x in 'Adh':
...     lst.insert(bisect.bisect(lst, x), x)
...     print(lst)
... 
['A', 'a', 'b', 'c', 'e', 'f', 'g']
['A', 'a', 'b', 'c', 'd', 'e', 'f', 'g']                                                                            
['A', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']                       

如果允许使用标准库,则可以使用
对分

>>> import bisect
>>> lst = list('abcefg')
>>> for x in 'Adh':
...     lst.insert(bisect.bisect(lst, x), x)
...     print(lst)
... 
['A', 'a', 'b', 'c', 'e', 'f', 'g']
['A', 'a', 'b', 'c', 'd', 'e', 'f', 'g']                                                                            
['A', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']                       

在列表中找到单词所在的位置,然后使用
insert()
请不要破坏您的帖子。一旦您提交了一篇文章,您就已经将内容授权给了Stack Overflow社区()。根据SE政策,任何故意破坏行为都将被恢复。请在列表中找到该单词所属的位置,然后使用
insert()
请不要故意破坏您的帖子。一旦您提交了一篇文章,您就已经将内容授权给了Stack Overflow社区()。根据SE策略,任何故意破坏行为都将被恢复。使用
for
else:
子句,而不是检查字符串是否在数组中。如果你在不中断的情况下到达循环的末尾,它就会执行。@Sheshank S。谢谢你的帮助。我还有一个问题,使用<运算符是否足以比较两个单词中的哪个先到?例如,如果我有'Amy'和'Alice',我会得到:'Alice'<'Amy'=True。如果Alice比Amy小,这是否意味着它在列表中位于Amy之前或之后?我对python如何按字母顺序排列字符串感到困惑。谢谢@ReneYeri是的,Python按字母顺序排列字符串。与其检查字符串是否在数组中,不如使用
for
else:
子句。如果你在不中断的情况下到达循环的末尾,它就会执行。@Sheshank S。谢谢你的帮助。我还有一个问题,使用<运算符是否足以比较两个单词中的哪个先到?例如,如果我有'Amy'和'Alice',我会得到:'Alice'<'Amy'=True。如果Alice比Amy小,这是否意味着它在列表中位于Amy之前或之后?我对python如何按字母顺序排列字符串感到困惑。谢谢@ReneYeri是的,Python按字母顺序排列字符串。