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

发布于 2024-11-25 01:22:16 字数 162 浏览 1 评论 0原文

我正在尝试创建一个程序来生成 python 中字符串的所有可能的大写情况。例如,给定“abcedfghij”,我想要一个程序生成: Abcdefghij ABcdef.. 。 。 aBcdef.. 。 ABCDEFGHIJ

等等。我正在尝试找到一种快速的方法来做到这一点,但我不知道从哪里开始。

I am trying to create a program to generate all possible capitalization cases of a string in python. For example, given 'abcedfghij', I want a program to generate:
Abcdefghij
ABcdef..
.
.
aBcdef..
.
ABCDEFGHIJ

And so on. I am trying to find a quick way to do it, but I don't know where to start.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陌路终见情 2024-12-02 01:22:16

与 Dan 的解决方案类似,但更简单:

>>> import itertools
>>> def cc(s):
...     return (''.join(t) for t in itertools.product(*zip(s.lower(), s.upper())))
...
>>> print list(cc('dan'))
['dan', 'daN', 'dAn', 'dAN', 'Dan', 'DaN', 'DAn', 'DAN']

Similar to Dan's solution, but much simpler:

>>> import itertools
>>> def cc(s):
...     return (''.join(t) for t in itertools.product(*zip(s.lower(), s.upper())))
...
>>> print list(cc('dan'))
['dan', 'daN', 'dAn', 'dAN', 'Dan', 'DaN', 'DAn', 'DAN']
小镇女孩 2024-12-02 01:22:16
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"))

印刷:

['dan', 'daN', 'dAn', 'dAN', 'Dan', 'DaN', 'DAn', 'DAN']
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"))

prints:

['dan', 'daN', 'dAn', 'dAN', 'Dan', 'DaN', 'DAn', 'DAN']
北渚 2024-12-02 01:22:16
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))

出去:

abcd Abcd aBcd abCd abcD ABcd AbCd AbcD aBCd aBcD abCD ABCd ABcD AbCD aBCD ABCD
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))

Out:

abcd Abcd aBcd abCd abcD ABcd AbCd AbcD aBCd aBcD abCD ABCd ABcD AbCD aBCD ABCD
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文