python字符串子集的所有组合
发布时间:2020-12-04 21:33:20  所属栏目:Python  来源:互联网 
            导读:我需要字符串子集的所有组合.另外,长度为1的子集之后只能是长度 1的子集.例如对于字符串4824,结果应该是: [ [4, 824], [4, 82, 4], [48, 24], [482, 4], [4824] ] 到目前为止,我设法检索所有可能的子集: length = len(number) ss = [] for i in xrange(leng
                
                
                
            | 
                         我需要字符串子集的所有组合.另外,长度为1的子集之后只能是长度> 1的子集.例如对于字符串4824,结果应该是: [ [4,824],[4,82,4],[48,24],[482,[4824] ] 到目前为止,我设法检索所有可能的子集: length = len(number)
    ss = []
    for i in xrange(length):
        for j in xrange(i,length):
            ss.append(number[i:j + 1]) 
 这给了我: ['4','48','482','4824','8','82','824','2','24','4'] 但我现在不知道如何将它们结合起来. 解决方法首先,编写一个函数来生成字符串的所有分区:def partitions(s):
    if s:
        for i in range(1,len(s) + 1):
            for p in partitions(s[i:]):
                yield [s[:i]] + p
    else:
        yield [] 
 这将迭代所有可能的第一个段(一个字符,两个字符等),并将这些段与字符串的相应剩余部分的所有分区组合在一起. >>> list(partitions("4824"))
[['4','4'],['4','24'],'824'],['48',['482',['4824']] 
 现在,您可以只过滤那些符合您条件的条件,即那些没有两个连续长度为1的子串的条件. >>> [p for p in partitions("4824") if not any(len(x) == len(y) == 1 for x,y in zip(p,p[1:]))]
[['4',['4824']] 
 这里,zip(p,p [1:])是迭代所有连续项对的常用方法. 更新:实际上,将约束直接合并到分区函数中也不是那么难.只需跟踪最后一段并相应地设置最小长度. def partitions(s,minLength=1):
    if len(s) >= minLength:
        for i in range(minLength,len(s) + 1):
            for p in partitions(s[i:],1 if i > 1 else 2):
                yield [s[:i]] + p
    elif not s:
        yield [] 
 演示: >>> print list(partitions("4824"))
[['4',['4824']]                        (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
推荐文章
            站长推荐
            - 如何使用基于numpy的日期的窗口获取时间序列的回
 - python进阶教程之函数对象(函数也是对象)
 - python开发_HTMLParser_html文档解析
 - python – Django 1.7 makemigrations – ValueE
 - Jython – 使用Python数据结构或Java数据结构更快
 - [Python] 使用dict和set
 - python – Tkinter Canvas将项目移动到顶层
 - python – boto dynamodb2:我可以只使用范围键查
 - python – 如何在Linux上打包Kivy IOS应用程序?
 - python – sklearn pipeline – 在管道中应用多项
 
热点阅读
            