第一个函数能够分隔字符串的每个字母并列出该字母出现的次数。例如:print(rlencode("Hello!"))[('H', 1), ('e', 1), ('l', 2), ('o', 1), ('!', 1)]我怎么得到rldecode(rle):做完全相反的rlencode(s)事情,以便rldecode(rlencode(x)) == x返回Truedef rlencode(s): """ signature: str -> list(tuple(str, int)) """ string=[] count=1 for i in range(1,len(s)): if s[i] == s[i-1]: count += 1 else: string.append((s[i-1], count)) count=1 if i == len(s)-1: string.append((s[i], count)) return stringdef rldecode(rle): """ #signature: list(tuple(str, int)) -> str #""" string=" " count=1 for i in rle: if i == rle: string += i return string
3 回答

www说
TA贡献1775条经验 获得超8个赞
您可以使用collections.Counter.elements():
from collections import Counter
l = [('H', 1), ('e', 1), ('l', 2), ('o', 1), ('!', 1)]
print(''.join(Counter(dict(l)).elements()))
这输出:
Hello!

慕盖茨4494581
TA贡献1850条经验 获得超11个赞
使用join:
b = [('H', 1), ('e', 1), ('l', 2), ('o', 1), ('!', 1)]
''.join([c[0] * c[1] for c in b])
Hello!
您还可以对初始函数使用列表推导式。
添加回答
举报
0/150
提交
取消