feikeer27 2021-07-17 15:33 采纳率: 75%
浏览 75
已结题

python 如何将同类型的字符串重新组合

如 List = ['az046!1', '7sas!a', '54821s', '!!', 'ew549#0', '12345p', '5qqs%$s', '67890b', 'op564%4']
若将a记为英文,b为数字,c为特殊字符
则'az046!1'为a2b3c1b1(2个英文+3个数字+1个特殊字符+1个数字),'7sas
!a'为b1a3c2a1,'54821s'为b5a1,'!!'为c2,'ew549#0'为a2b3c1b1,'12345p'为b5a1,'5qqs%$s'为b1a3c2a1,'67890b'为b5a1,'op564%4'为a2b3c1b1

因此列表中的类型有a2b3c1b1、b1a3c2a1、b5a1、c2这四种。

想要将同类型的字符串,按照abc的顺序排列组合生成新的列表new_List = []
比如同类型的a2b3c1b1中,有'az046!1','ew549#0','op564%4'这三个,将这三个字符串按照abc的顺序重新组合。
会生成az046!1、ew046!1、op046!1、az549!1、az564!1、az046#0、az046%4、ew549#0、az549#0……等等。
意思是将所有的a2b3c1b1中的a2、b3、c1、b1全部重新组合一遍,但不改变a2b3c1b1的顺序。

求如何用python代码实现以上功能,尽量注释说明下部分代码的作用!

img

  • 写回答

1条回答 默认 最新

  • vigiles 2021-07-19 14:21
    关注

    这个问题的核心是 笛卡尔积 运算,完整代码我发在这里了 http://www.gaohaiyan.com/2847.html ,
    思路就是先按照你的要求对List里的字符串进行拆分成a1b2c1a1这种,然后放到一个二维数组(列表)里,将列表矩阵转换后,笛卡尔积运算,就得到结果了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月19日
  • 已采纳回答 7月19日
  • 修改了问题 7月17日
  • 创建了问题 7月17日

悬赏问题

  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题