字符串的所有可能情况的组合

2024-09-29 07:30:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个程序来在python中生成字符串的所有可能的大小写情况。例如,给定“abcedfghij”,我希望一个程序生成: defghij姜瑜 zhu wen jian。。 . . zhu wen jian。。 . defghij姜瑜

等等。我想找一个快速的方法来做,但我不知道从哪里开始。在


Tags: 方法字符串程序情况jianwendefghijzhu
3条回答
from itertools import product, izip
def Cc(s):
    s = s.lower()
    for p in product(*[(0,1)]*len(s)):
      yield ''.join( c.upper() if t else c for t,c in izip(p,s))

print list(Cc("Dan"))

印刷品:

^{pr2}$
import itertools

def comb_gen(iterable):
    #Generate all combinations of items in iterable
    for r in range(len(iterable)+1):
        for i in itertools.combinations(iterable, r):
            yield i 


def upper_by_index(s, indexes):
     #return a string which characters specified in indexes is uppered
     return "".join(
                i.upper() if index in indexes else i 
                for index, i in enumerate(s)
                )

my_string = "abcd"

for i in comb_gen(range(len(my_string))):
    print(upper_by_index(my_string, i))

输出:

^{pr2}$

与Dan的解决方案类似,但要简单得多:

>>> import itertools
>>> def cc(s):
...     return (''.join(t) for t in itertools.product(*zip(s.lower(), s.upper())))
...
>>> print list(cc('dan'))
^{pr2}$

相关问题 更多 >