a = ['dog','cat','frog']
b = 'cat'
如何退货:
c = ['dog','cat','cat','frog']
我尝试在原始列表中找到'cat'
的索引,然后在下一个位置插入'cat'
,但是循环一直在运行并且永远不会结束。有没有更简单的方法可以做到这一点?
答案 0 :(得分:2)
使用numpy
查找值所在的位置,然后插入下一个索引。
import numpy as np
a = np.array(["dog", "cat", "frog"])
b = "cat"
idx = np.where(a == b)[0] + 1
new_a = np.insert(a, idx, b)
np.where
将查找出现“猫”的所有索引。向这些索引添加一个将移至数组中的下一个位置。调用np.insert
将在每个索引处附加一个新值“ cat”。
答案 1 :(得分:1)
即使列表更改了大小,我们也可以使用while
循环遍历列表。这也使我们可以使用显式索引更好地控制列表中的位置
a = ['dog','cat','frog']
b = 'cat'
index = 0
while index < len(a):
if a[index] == b:
a.insert(index, b)
index += 1 # Skip item we just inserted
index +=1
print(a)
# ['dog', 'cat', 'cat', 'frog']