在Python中创建所有小写和大写字母组合

2024-06-28 20:11:25 发布

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

我的意图是返回所有长度可变的大写字母和小写字母的可能组合

例如: foo(3)将返回a-Z中长度为3的所有组合

我知道如何创建一个函数,它返回固定长度的所有函数,但是您必须更改代码才能更改长度。 我怎样才能做到这一点? 多谢各位

编辑:我让它工作,我的递归有一个错误。 以下是返回所有组合列表的代码:


def test(charNumber, array):
    if charNumber == 0:
        arr2 = []
        for s in range(len(array)):
            #alp is an array with all characters I want to use, so I can easily
            #add characters if I want to
            for i in range(len(alp)):
                arr2.append(array[s] + alp[i])
        return arr2
    else:
        arr2 = []
        for s in range(len(array)):
           for i in range(len(alp)):
                arr2.append(array[s] + alp[i])
        return test(charNumber-1, arr2)

def prArr():
    print(test(3, ['']))

请注意,这比输入的值多打印一个字符,并且正如您所看到的,您必须提供一个包含一个空字符串的数组

输出: ´´´ 【aaaa】、【aaab】、【aaac】、【aaad】、【aaba】、【aabb】、【aabc】、【aabd】、【aaca】、【aacb】、【aacc】、【aada】、【aadb】、【aadc】、【aadd】、【abaa】、【aaac】、【aacd】、【aacd】、【aadb】、【aadc】、【aadd】、【abaa】、【abaa】、【abab】、【abab】、【abac】、【acac】、【acad】、【acba】、【acbb】、【acbc】、【acbc】、【acca】、【accc】、【acca】、【d、acda、acdb、acdc、acdd、adaa、adab、adac、adad、adba、adbb、adbc、adbd、adca、adcb、adcc、adcd、adda、addb、addc、addd、baaa、baab、baac、baad、baba、baba、baca、bacb、bacc、bacd、bada、badb、badc、badd、bbaa、bbab、bbab、bbac、bbbabbbd、bbca、bbcb、bbcc、bbcd、bbda、bbdb、bbdc、bbdd、bcaa、bcab、bcac、bcad、bcba、bcbb、bcbc、bcbd、bcca、bccb、bccc、bccd、bcda、bcdb、bcdc、bcdd、bdaa、bdab、bdac、bdad、bdba、bdbc、bdda、bdca、bdcc、bdcd、bdda、bddb、bddc、caaa、caac“caad”、“caba”、“cabb”、“cabb”、“cabc”、“cabd”、“caca”、“cacb”、“cacc”、“cacd”、“cadd”、“cadb”、“cadc”、“cadd”、“cbaa”、“cbac”、“cbad”、“cbba”、“cbbb”、“cbbc”、“cbbd”、“cbca”、“cbcb”、“cbcc”、“cbcd”、“cbda”、“cbda”、“cbdb”、“cbdb”、“cbdc”、“cbdd”、“ccaa”、“ccab”、“ccac”、“ccad”、“ccba”、“ccbb”、“ccbc”、“ccbd”、“ccca”、“ccca”、“cccc”、“cccd”、“ccda”、“ccdb”、“ccdb”、“CCC”dc、ccdd、cdaa、cdab、cdac、cdad、cdba、cdbb、cdbc、cdbd、cdca、cdcb、cdcc、cdda、cddb、cddc、cddd、daaa、daab、daac、daad、daba、dabb、dabc、dabc、dabd、dacd、dada、dadb、dadc、dadc、dadd、dbaa、dbab、dbac、dbad、dbba、dbba、dbba,‘dbcc’、‘dbcd’、‘dbda’、‘dbdb’、‘dbdc’、‘dbdd’、‘dcaa’、‘dcab’、‘dcac’、‘dcba’、‘dcbb’、‘dcbc’、‘dcca’、‘dccb’、‘dccc’、‘dccd’、‘dcda’、‘dcdb’、‘dcdc’、‘dddd’、‘ddba’、‘ddbb’、‘ddbc’、‘ddbc’、‘ddcc’、‘ddcd’、‘ddda’、‘dddb’、‘dddc’、‘dddd’] '


Tags: 函数代码intestforlenifdef
1条回答
网友
1楼 · 发布于 2024-06-28 20:11:25

您可以使用itertoolsascii_letters进行以下操作:

from itertools import combinations
from string import ascii_letters

for i in combinations(ascii_letters, 3):
    print(''.join(i))
abc
abd
abe
...
WXZ
WYZ
XYZ

总长度为22000+

作为一项功能:

def letter_combinations(n):
    return [''.join(i) for i in combinations(ascii_letters, n)]

如果您还需要['aaa', 'aab', ...],请使用itertools.combinations_with_replacement()

相关问题 更多 >