Как найти и заменить значение в списке python новым отредактированным значением - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь написать python код для поиска и замены значения в списке.

Шаги:

  1. У меня есть один элемент в списке [8]
  2. Мне нужно найти текущий элемент (в нашем случае 8) уменьшить со значением 2, затем добавить (Префикс и Суффикс) как отдельный элемент в том же списке ['6','8','6']
  3. Взятие первого элемента из самого последнего списка ('6') повторите шаг 1 и шаг 2 ('4','6','4') и замените все повторяющиеся / повторяющиеся / повторяющиеся первые элементы ('6') списка. ['4','6','4','8','4','6','4']
  4. Повторяйте шаги, описанные выше, до тех пор, пока первый элемент не будет иметь число> 0. ['2','4','2','6','2','4','2','8','2','4','2','6','2','4','2']

другой пример:

[10]

[8,10,8]

[6,8,6,10,6,8,6]

[4,6,4,8,4,6,4,10,4,6,4,8,4,6,4]

[2,4,2,6,2,4,2,8,2,4,2,6,2,4,2,10,2,4,2,6,2,4,2,8,2,4,2,6,2,4,2]

Я смог сделать для string_length < 10

string = '8'
i = int(string)

while i>2:
    print(string)
    temp = str(int(string[0])-2) + string[0] + str(int(string[0])-2)

    string = string.replace(string[0],temp)
    i -= 2

print(string)

выход:

8
686
4648464
242624282426242

для одного, ди git Я могу сделать это, но я сталкиваюсь с проблемой для значений больше 9.

может кто-нибудь поможет мне в программировании этого?

Есть ли другой способ сделать то же самое с нашим списком?

1 Ответ

0 голосов
/ 14 марта 2020

Во-первых, ваши примеры несовместимы между строками, списками строк и списками целых чисел, но самый простой вариант здесь - это список целых чисел, поэтому я буду использовать это. При необходимости вы всегда можете конвертировать позже.

Это отличная ситуация для рекурсии. Вы не получите промежуточные результаты, как в вопросе, но процесс намного более упорядочен.

def expand(number, k=2):
    if number == k:
        return [number]
    expansion = expand(number-k, k)
    return expansion + [number] + expansion

print(expand(8))  # -> [2, 4, 2, 6, 2, 4, 2, 8, 2, 4, 2, 6, 2, 4, 2]

Этот код должен быть самодокументированным, но дайте мне знать, если что-то неясно.

...