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按字母顺序排列字符串。