将列表转换回字符串 python

第一个函数能够分隔字符串的每个字母并列出该字母出现的次数。例如:


print(rlencode("Hello!"))

[('H', 1), ('e', 1), ('l', 2), ('o', 1), ('!', 1)]

我怎么得到rldecode(rle):做完全相反的rlencode(s)事情,以便rldecode(rlencode(x)) == x返回True


def 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 string




def rldecode(rle):

    """

    #signature: list(tuple(str, int)) -> str

    #"""

    string=" "

    count=1

    for i in rle:

        if i == rle:

            string += i

    return string


大话西游666
浏览 194回答 3
3回答

www说

您可以使用collections.Counter.elements():from collections import Counterl = [('H', 1), ('e', 1), ('l', 2), ('o', 1), ('!', 1)]print(''.join(Counter(dict(l)).elements()))这输出:Hello!

慕盖茨4494581

使用join:b = [('H', 1), ('e', 1), ('l', 2), ('o', 1), ('!', 1)]''.join([c[0] * c[1] for c in b])Hello!您还可以对初始函数使用列表推导式。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python