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

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 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解