将嵌套循环实现的摩尔斯码转换程序改写为列表推导式
单词转摩尔斯码并统计唯一结果:列表推导式改写版本
原代码通过嵌套循环实现单词到摩尔斯码的转换,再统计唯一结果数量,以下是用列表推导式改写的两种实现方式:
方式1:直接用生成器表达式(更高效,无中间列表)
c = [".-","-...","-.-.","-.",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-.--","--.."] # 注:修正了原数组中对应字母l(索引11)的错误值,原代码为重复的".-",正确应为".-.." return len(set(''.join(c[ord(char) - 97] for char in word) for word in words))
方式2:保留中间列表的列表推导式
c = [".-","-...","-.-.","-.",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-.--","--.."] transformations = [''.join(c[ord(char) - 97] for char in word) for word in words] return len(set(transformations))
改写说明
- 内层用生成器表达式遍历单词的每个字符,转换为对应摩尔斯码片段
- 用
''.join()拼接单个单词的所有摩尔斯码片段,得到完整转换结果 - 外层通过列表推导式(或生成器表达式)批量处理所有单词,最后转集合去重后取长度
内容的提问来源于stack exchange,提问作者Madhav Malik
相关产品推荐
相关产品推荐

