抱歉,这个标题可能不太有用;我不知道如何用一句话来概括这个问题。
我正在尝试计算 Python 3.10 中一个单词的长度。一个“单位”是(C 代表辅音,V 代表元音)CV或VC或C或V(后两者仅在无法配对时使用)。例如,“piece” 将是三个单位(pi-e-ce
或pi-ec-e
),“queue” 将是四个单位(qu-e-u-e
),而“lampshade” 将是六个单位(la-m-p-s-ha-de
)。
我所苦苦思索的是如何准确地检测这些单元,而无需对每对字母的每个元音和辅音的组合进行迭代。使用迭代来做到这一点效率极低,但以我目前对 Python 的了解,我想不出更好的方法。解决这个问题的有效方法是什么?
作为一个额外的(可选)问题,如果引入二合字母,如“gh”和“th”,会怎么样?这将使“thigh”等单词(四个单位t-hi-g-h
)变成只有两个单位(thi-gh
),但也使计算变得复杂。
只需将列表中的所有内容分别转换为“V”或“C”。然后循环检查前 2 个字母。如果是“CV”或“VC”,则弹出列表,无论如何,再次弹出它。计算耗尽列表所需的迭代次数。
它可以通过多种方式完成,但由于我喜欢函数式编程风格,所以这里有一个可能的解决方案:
使用正则表达式:
或者记住我们可以免费获得哪种:
在线尝试!