gpt4 book ai didi

python - 将列表转回字符串 python

转载 作者:太空宇宙 更新时间:2023-11-03 21:36:27 25 4
gpt4 key购买 nike

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

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

最佳答案

您可以利用字符串乘以数字来重复它的事实,并使用 `''.join() 将列表的元素组合在一起。

为了显示字符串乘法的效果,我将 "a" 乘以 5

"a"*5 #'aaaaa'

在理解中使用它会给你

str = [char[0]*char[1] for char in rle] #['H', 'e', 'll', 'o', '!']

然后添加''.join(),您就会得到答案。

l = [('H', 1), ('e', 1), ('l', 2), ('o', 1), ('!', 1)]
str = ''.join(char[0]*char[1] for char in rle) #'Hello!'

所以你的函数是

def rldecode(rle):
"""
signature: list(tuple(str, int)) -> str
"""
return ''.join(char[0]*char[1] for char in rle)

此外,如果您想让您的 rlencode 更简洁,您可以使用 enumerate 来简化它,以帮助您保持在字符串中的位置并检查您是否要击中新字符或字符串末尾。您只需在每个循环上增加计数器即可。

def rlencode(s):

output = []
count = 0

for i, char in enumerate(s):

count += 1

if (i == (len(s)-1)) or (char != s[i+1]):
output.append((char, count))
count = 0

return output

关于python - 将列表转回字符串 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53218841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com