gpt4 book ai didi

python - 在列表中的另一个值之后插入一个值

转载 作者:太空狗 更新时间:2023-10-30 00:58:43 24 4
gpt4 key购买 nike

我想要一个名为 insert_after 的函数,它将接受一个列表和两个值(search_valuevalue)。

功能应该是在第一次出现 search_value 之后插入 value

如果 search_value 不在 列表中,则将其添加到末尾。我想使用 try...except 语句来执行此操作。

例如,如果列表是:

myList = [4,2,6,7,8,1], 

然后函数调用:

insert_after(myList, 7, 5)

应该返回:

[4,2,6,7,5,8,1]

我试过了,但我的值一直被插入到列表的末尾,即使我指定了索引。

def insert_after(list1, search_value, value):
try:
for i in list1:
if i == search_value:
list1.insert(search_value+1,value)
else:
list1.insert(len(list1)+1,value)
except:
list1.insert(len(list1)+1,value)

最佳答案

首先需要在列表中找到search_value的索引,这可以通过.index方法来完成。然后,您可以使用 .insert 方法将 value 插入到之后的位置(索引 +1)。

但是,我们需要考虑lstsearch_value 的情况。为此,我们只需使用 try...except 来捕获 .index 失败时的 ValueError。并且,在这种情况下,我们希望在末尾附加到 lst.insert;要么工作。

def insert_after(lst, search_value, value):
try:
lst.insert(lst.index(search_value)+1, value)
except ValueError:
lst.append(search_value)
#or: lst.insert(len(lst)-1, value)

和一个测试:

>>> l = [4, 2, 6, 7, 8, 1]
>>> insert_after(l, 7, 5)
>>> l
[4, 2, 6, 7, 5, 8, 1]

为什么您的方法不起作用?

如果我们仔细观察您的主要插入行:

list1.insert(search_value+1,value)

我们可以看出你的逻辑有点不对劲。 .insert 方法接受一个索引和一个值。在这里,您将 search_value+1 作为 index 传递,即使这实际上只是值。

希望您能从我的代码中看到,使用 .index 方法是正确的方法,因为它为我们提供了该值的索引 - 允许我们正确使用.insert

如果您不想使用 .index 怎么办?

所以,是的,您可以使用for-loop,但不是像现在这样迭代项,您真的想要迭代值< em>和索引。这可以使用 enumerate() 来实现。

所以,我会让你自己把它放在一个函数中,因为你很可能最终会使用 .index 方法,但基本思想是这样的:

for i, e in enumerate(lst):
if e == search_value:
lst.insert(i+1, value)

关于python - 在列表中的另一个值之后插入一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49464719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com