Добавлять номера в указанные элементы списка - PullRequest
0 голосов
/ 05 сентября 2018

Вот мой список, и мне нужно добавить номер, где алфавит есть в этом списке:

list1=list(some_list)

Вот пример списка1:

list1=[ '-', '-', '-', '-', '-', '-', 'G', 'S', 'H', 'S', 'M', 'R', 'Y', 'F', 'F', 'T', 'S', 'V', 'S', 'R', 'P', 'G']
['-', '-', '-', '-', '-', '-', 'G', 'S', 'H', 'S', 'M', 'R', 'Y', '-', '-', '-']

Желаемый результат должен быть:

list1=[ '-', '-', '-', '-', '-', '-', '1G', '2S', '3H', '4S', '5M', '6R', '7Y', '8F', '9F', '10T', '11S', '12V', '13S', '14R', '15P', '16G']
['-', '-', '-', '-', '-', '-', '1G', '2S', '3H', '4S', '5M', '6R', '7Y', '-', '-', '-']

Ответы [ 2 ]

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

Вы можете использовать понимание списка с str.isalpha, itertools.count и f-строками. Форматированные строковые литералы поддерживаются в Python 3.6 +.

from itertools import count

c = count(1)
res = [i if not i.isalpha() else f'{next(c)}{i}' for i in list1]

Результат:

['-', '-', '-', '-', '-', '-', '1G', '2S', '3H', '4S', '5M', '6R',
'7Y', '8F', '9F', '10T', '11S', '12V', '13S', '14R', '15P', '16G']
0 голосов
/ 05 сентября 2018

Использование простой итерации.

Демо:

l1 = [ '-', '-', '-', '-', '-', '-', 'G', 'S', 'H', 'S', 'M', 'R', 'Y', 'F', 'F', 'T', 'S', 'V', 'S', 'R', 'P', 'G']
c = 1
for i, v in enumerate(l1):
    if v.isalpha():
        l1[i] = str(c)+v
        c+=1
print(l1)

Выход:

['-', '-', '-', '-', '-', '-', '1G', '2S', '3H', '4S', '5M', '6R', '7Y', '8F', '9F', '10T', '11S', '12V', '13S', '14R', '15P', '16G']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...