Python:当元素与子字符串匹配时,如何在列表中复制元素

时间:2018-12-14 19:51:58

标签: python-2.7 list

a = ['dog','cat','frog']

b = 'cat'

如何退货:

c = ['dog','cat','cat','frog']

我尝试在原始列表中找到'cat'的索引,然后在下一个位置插入'cat',但是循环一直在运行并且永远不会结束。有没有更简单的方法可以做到这一点?

2 个答案:

答案 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']