-1

拥有字母AZ和数字0-9的字母表,如何获得所有 1296 种可能的组合,例如:

['AA', 'AB', ..., 'AZ', 'A0', 'A1', ..., 'Z9', '0A', '0B', ..., '98', '99']

作为一个附带问题,这种数字系统叫什么?

4

2 回答 2

3

当前的建议是错误的。例如,与替换的组合不会给你ABBA同时只会给你第一个。并且permutations不会有AA,BB等。

相反,您应该使用itertools.product.

例如:

import string
import itertools

combinations_generator = itertools.product(string.ascii_uppercase + string.digits, 
                                           repeat=2)
combinations = list(map(''.join, combinations_generator))
print(len(combinations))

这将为您提供 1296 种组合。

combinations_generator将生成像('A', 'A'),('A', 'B')
这样的元组。我们将像,等map(''.join, combinations_generator)一样将它们连接在一起。'AA''AB'

于 2017-12-28T22:18:10.500 回答
0

您可以使用排列来获取列表。

例如

import string
import itertools
series = [''.join(r) for r in itertools.permutations([str(i) for i in range(10)]+[str(c) for c in string.ascii_uppercase], 2)]
print(series)
print(len(series))  # got 1260 here
于 2017-12-28T07:53:33.653 回答