繁体   English   中英

如何在python中进行组合?

[英]How to make combinations in python?

如何在字符串中生成所有 3 个大写组合? 例如:

f("abcde") => ['ABCde', 'aBCDe', 'abCDE', 'ABcDe', 'ABcdE' ...]

一种方法是生成字母的笛卡尔积(小写和大写),然后仅在正好有 3 个大写字母时保留它们

from itertools import product
def combs(s, n):
    pairs = tuple(i.lower() + i.upper() for i in s)
    for i in product(*pairs):
        if sum(1 for j in i if j.isupper()) == n:
            yield ''.join(i)

例子

for s in combs('abcde', 3):
    print(s)

输出

abCDE
aBcDE
aBCdE
aBCDe
AbcDE
AbCdE
AbCDe
ABcdE
ABcDe
ABCde
def f(s):
    r = []
    for i in range(1, len(s)-1):
        for j in range(i+1, len(s)):
            r.append(s[:i].capitalize() + s[i:j].capitalize() + s[j:].capitalize())
    return r

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM