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

2024-10-03 06:29:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将类似“a3b4”的字符串转换为“aaabbb”。 如果没有其他模块,如何实现这一点?到目前为止,我的代码如下所示:

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

Tags: 模块字符串代码inforlenifnot
1条回答
网友
1楼 · 发布于 2024-10-03 06:29:58

这应该起作用:

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'

编辑:

如果要匹配任何srting和任何数字,应使用regex:

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'

相关问题 更多 >