Python: как дублировать элемент в списке, когда элемент соответствует подстроке - PullRequest
0 голосов
/ 14 декабря 2018
a = ['dog','cat','frog']

b = 'cat'

Как я могу вернуть:

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

Я попытался найти индекс 'cat' в исходном списке, а затем вставить 'cat' в следующем месте, но циклработает непрерывно и никогда не кончается.Есть ли более простой способ сделать это?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Используйте 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" к каждому из этих индексов.

0 голосов
/ 14 декабря 2018

Мы можем использовать цикл 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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...