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

时间:2018-09-05 10:50:29

标签: python string list

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

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

2 个答案:

答案 0 :(得分:2)

您可以对str.isalphaitertools.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']

答案 1 :(得分: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']