在列表的指定元素中附加数字

问题描述 投票:1回答:2

这是我的列表,我需要在此列表中附加字母所在的数字:

list1=list(some_list)

以下是list1的示例:

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', '-', '-', '-']
python string list
2个回答
1
投票

使用简单的迭代。

演示:

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

2
投票

您可以使用str.isalphaitertools.count和f-strings的列表推导。 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']
© www.soinside.com 2019 - 2024. All rights reserved.