在Python中创建一个压缩函数?

Cer*_*ero 5 python compression

我需要创建一个名为compress的函数,通过用字母和数字替换任何重复的字母来压缩字符串.我的函数应该返回缩短版本的字符串.我已经算出了第一个角色而不是其他角色.

例如:

>>> compress("ddaaaff")
'd2a3f2'


 def compress(s):
     count=0

     for i in range(0,len(s)):
         if s[i] == s[i-1]:
             count += 1
         c = s.count(s[i])

     return str(s[i]) + str(c)
Run Code Online (Sandbox Code Playgroud)

Pat*_* Yu 9

这是一个压缩函数的简短python实现:

def compress(string):

    res = ""

    count = 1

    #Add in first character
    res += string[0]

    #Iterate through loop, skipping last one
    for i in range(len(string)-1):
        if(string[i] == string[i+1]):
            count+=1
        else:
            if(count > 1):
                #Ignore if no repeats
                res += str(count)
            res += string[i+1]
            count = 1
    #print last one
    if(count > 1):
        res += str(count)
    return res
Run Code Online (Sandbox Code Playgroud)

这里有一些例子:

>>> compress("ddaaaff")
'd2a3f2'
>>> compress("daaaafffyy")
'da4f3y2'
>>> compress("mississippi")
'mis2is2ip2i'
Run Code Online (Sandbox Code Playgroud)


小智 5

带发电机的短版:

from itertools import groupby
def compress(string):
    return ''.join('%s%s' % (char, sum(1 for _ in group)) for char, group in groupby(string)).replace('1', '')
Run Code Online (Sandbox Code Playgroud)

(1)按字符分组 groupby(string)

(2)用计数组的长度sum(1 for _ in group)(因为不可能len在组上)

(3)加入适当的格式

(4)删除1单个项目的字符