汉字首字母组合的笛卡尔积的python实现

编程入门 行业动态 更新时间:2024-10-08 12:39:41

汉字首字母组合的<a href=https://www.elefans.com/category/jswz/34/1764780.html style=笛卡尔积的python实现"/>

汉字首字母组合的笛卡尔积的python实现

接上一篇文章。问题还是昨天的问题,昨天是用vba写的,今天用python再写一遍,进行对比。

用python来实现感觉要清晰、简洁一些。主要的函数是第一个。

def cartesian(lst_set):# 输入的是列表,列表的元素是集合;输出的是音序串。# 如输入[{'Z', 'C'},{'J'}];输出"[{'ZJ','CJ'}]"set_rtn = set()  # 接收返回值if len(lst_set) == 2:for a in lst_set[0]:for b in lst_set[1]:set_rtn.add(a+b)return [set_rtn]  # 返回一个列表,里面是集合。即[{'字符串', '有可能不只一个元素'}]elif len(lst_set) > 2:# 先计算前两个集合的笛卡儿积lst_set_tmp = cartesian(lst_set[0:2])# 再把前两个的笛积和第3个起的集合进行拼接lst_set_tmp.extend(lst_set[2:])return cartesian(lst_set_tmp)def char_alpha_set(chars):# 通过查字典,把输入的中文字符串,返回成一个列表,列表的元素是集合。# 如输入:张茜,输出[{'Z'},{'X', 'Q'}]# 查字专用。这里仅以以下几个字为例。dic = dict()dic['曾'] = 'C,Z'dic['茜'] = 'Q,X'dic['佳'] = 'J'lst_set = list()for c in chars:lst_set.append(set(dic[c].split(',')))return lst_setdef char_alpha(chars):# 传入中文字符串,输出音序串。如输入"张三",输出"ZS"lst_set = char_alpha_set(chars)alpha = cartesian(lst_set)  # alpha 的结构是:[{‘A’, 'B', 'C'}]return ','.join(alpha[0])if __name__ == '__main__':print(char_alpha('曾佳茜'))

更多推荐

汉字首字母组合的笛卡尔积的python实现

本文发布于:2024-02-14 14:19:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763690.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:笛卡尔   汉字   组合   首字母   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!