python3: заменить один из дублирующих элементов в списке другой строкой как: - PullRequest
0 голосов
/ 02 сентября 2018

В моем списке несколько дублирующих элементов. Я хочу изменить один из этих элементов на другой элемент строки. Например:

a = ['b','c','d','b','b']

Я хочу изменить 'b' с индексом 3 на 'x'

a = ['b','c','d','x','b']

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Читая ваши комментарии, похоже, вам все равно, будут ли заменены все дубликаты. Таким образом, вы можете сделать это в одной строке со следующим:

a = ['b','c','d','b','b']
new_a = [item if len([c for c in a[:index+1] if c == item]) == 1 else "x" for index, item in enumerate(a)]

print(new_a)

['b','c','d','x','x']

Если вы действительно хотите обновить второй экземпляр, в одной строке также работает следующее:

a = ['b','c','d','b','b']
new_a = [item if len([c for c in a[:index+1] if c == item]) != 2 else "x" for index, item in enumerate(a)]

print(new_a)

['b','c','d','x','b']
0 голосов
/ 02 сентября 2018

Основные операции со списком:

  • a.pop(idx) (появится элемент в индексе idx)
  • a.insert(idx, val) (вставит значение val в позиции idx)

ДА, это действительно плохо определенная проблема программирования, с множеством открытых вопросов:

  1. Может ли дублирование встречаться более 2 раз?
  2. замена должна быть сделана только для 1-го пункта?
  3. замена должна быть выполнена с постоянным символом, или, может быть, последовательность?

Пахнет домашней работой. Если так, пожалуйста, сделайте это без stackoverflow ....

...