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 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测