我对python很陌生,所以我想试试这个快速脚本。。。在
给定一组输入词:例如“dead”、“beef”,如何以编程方式生成给定长度和填充字符的所有可能字符串?在
结果如下所示(使用0
的焊盘,长度为12):
deadbeef0000
dead0beef000
dead00beef00
dead000beef0
dead0000beef
0deadbeef000
0dead0beef00
0dead00beef0
0dead000beef
00deadbeef00
00dead0beef0
00dead00beef
000deadbeef0
000dead0beef
0000deadbeef
生成此列表的简单方法可能是:
^{pr2}$有没有更直接的方法?我已经研究过itertools
的组合,但无法使其产生所需的结果。在
假设,如您的示例所示,您希望“实词”以其原始顺序出现,则可以直接执行此操作(每个所需的输出字符串只生成一次,无需重复,也无需“剔除”无关的字符串)。每个单词需要一个“slot”,每个pad字符需要一个slot,其中pad字符的总数是指定的最终长度减去单词长度之和。在您的示例中,有两个长度为4的单词,总单词长度为8,因此每个输出字符串中需要12-8=4个填充字符。总共有6个插槽(2个用于单词,4个用于填充字符)。因此,输出字符串的总数为6-choose-2=6-choose-4=6*5/2=15。这也解释了如何使用
itertools.combinations
来获得结果:从所有槽索引集中选择2个单词的索引,或者-等价地-从所有槽索引集中选择4个填充字符的索引。这里的代码执行前者:然后:
^{pr2}$显示所需的15个字符串。在
可能是这样的:
编辑:跟随@TimPeters评论
^{pr2}$或者用更普遍的方式:
相关问题 更多 >
编程相关推荐