这是我的列表,我需要在此列表中的字母后面附加数字:
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', '-', '-', '-']
答案 0 :(得分:2)
您可以对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']
答案 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']