gpt4 book ai didi

python - 最长的元音子串 - Python

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

这是卡塔的挑战。该函数应返回字符串中后续元音的最大数量。

我自己完成后发现这个非常实用的解决方案。

有人可以一步步解释代码吗?我想在这里彻底了解 join 和 split 位是如何相互补充的。

def solve(string):
return max(map(len, ''.join(i if i in 'aeiou' else ' ' for i in string).split()))

最佳答案

在这些情况下,最好的办法是简化并分成更小的部分。 join 只是将条件生成器理解中由元音或空格组成的字符串序列连接在一起:

s = 'aei234roieeieigfh'

out1 = ''.join(i if i in 'aeiou' else ' ' for i in s)
# 'aei oieeiei '

以上只是编写以下生成器函数的一种奇特方式:

def f(s):
for i in s:
if i in 'aeiou':
yield i
else:
yield ' '

''.join(f(s))
# 'aei oieeiei '

然后通过拆分你得到一个字符串列表:

out2 = out1.split()
# ['aei', 'oieeiei']

然后通过与 len 的映射,您将获取列表中每个项目的 len:

list(map(len, out2))
# [3, 7]

这等同于:

[len(i) for i in out2]
# [3, 7]

最后,通过取 max,您将找到列表中最长的元音序列。


我个人会在这里使用 itertools.groupby :)

max(len(list(v)) for k,v in groupby(s, key=lambda x: x in 'aeiou') if k)
# 7

一些您可能会觉得有用的读物​​:

关于python - 最长的元音子串 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58011818/

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