gpt4 book ai didi

python - 压缩重复字母列表

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

在准备考试的同时,我正在解决往年的考试。

编写函数 compress(lst) 接收一个非空的重复字母列表并返回一个元组列表,每个元组包含字母和数字或后续重复。 (见示例)

例如:

对于:

['a','a', 'b', 'b', 'b', 'c', 'a', 'a']

函数应该返回:

[('a', 2), ('b', 3), ('c', 1), ('a', 2)]

这是我的代码:

def compress(lst):
res = []
i = 0
for letter in lst:
letter_count = 0
while i < len(lst) and lst[i] == letter:
letter_count += 1
i +=1
res.append((letter, letter_count))
return res

我的函数返回:

[('a', 2), ('a', 0), ('b', 3), ('b', 0), ('b', 0), ('c', 1), ('a', 2), ('a', 0)]

我明白为什么会这样,但我看不出如何更改我的代码来解决问题。

最佳答案

使用groupby来自 itertools 模块,非常适合这里:

from itertools import groupby

lst = ['a','a', 'b', 'b', 'b', 'c', 'a', 'a']

print([(k, len(list(v))) for k, v in groupby(lst)])
# [('a', 2), ('b', 3), ('c', 1), ('a', 2)]

关于python - 压缩重复字母列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54277735/

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