列表的不同元素如何相乘(str 和 int)?

How can the different elements of the list be multiplied (str and int)?

我正在尝试将 'a3b4' 之类的字符串转换为 'aaabbbb'。 如果没有额外的模块,如何做到这一点?到目前为止,我的代码如下所示:

s = 'a3b4'
n = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
a = []
b = []

for i in range(len(s)):
    if s[i] in n:
        a.append(s[i])
    if s[i] not in n:
        b.append(s[i])
for i in range(len(b)):
    print(b[i])

这应该有效:

letters = list(s[::2])
nums = list(s[1::2])
res = ''.join([a*int(b) for a,b in zip(letters,nums)])

>>res
Out[1]: 'aaabbbb'

编辑:

如果您想匹配任何字符串和任何数字,您应该使用正则表达式:

letters = re.findall(r'[a-z]+',s)
nums = re.findall(r'\d+',s)
res = ''.join([a*int(b) for a,b in zip(letters,nums)])

用于:

 s='a10b3'

输出为:

>>res
Out[2]: 'aaaaaaaaaabbb'