gpt4 book ai didi

python - 一个字符串收缩的 Pythonic 实现,它列出了出现的字符及其计数?

转载 作者:行者123 更新时间:2023-11-28 21:37:19 25 4
gpt4 key购买 nike

我实现了字符串收缩,它列出了字符串的字符及其各自的计数。因此,例如,字符串“aadddza”变为“a2d3z1a1”。您能否提供有关制作我所拥有的 Pythonic 的建议?

def string_contraction(input_string):

if type(input_string) != str:
print("Not a string")
return

input_string = str.lower(input_string)

prev = input_string[0]
s = ""
i = 0

for lett in input_string:
if lett == prev:
i += 1
else:
s += prev+str(i)
prev = lett
i = 1
s += lett+str(i)

return(s)

最佳答案

itertools.groupby function 可以为你完成“困难的部分”。这是一个示例(“rle”是“游程编码”的缩写):

def rle(s):
from itertools import groupby
return "".join(letter + str(len(list(group)))
for letter, group in groupby(s))

然后:

>>> rle("aadddza")
'a2d3z1a1'

可能需要花一些时间盯着文档才能弄清楚它是如何工作的——groupby() 非常合乎逻辑,但并不简单。特别是,它生成的每个双元组的第二个元素不是来自原始可迭代对象的匹配元素列表,而是它本身是一个可迭代对象,它生成来自原始可迭代对象的一系列匹配元素。您的应用程序只关心匹配元素的数量。因此,代码使用 list(group) 将可迭代对象转换为列表,然后对其应用 len() 以获取数字。

关于python - 一个字符串收缩的 Pythonic 实现,它列出了出现的字符及其计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49784817/

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