我正在尝试递增所有可能的 base-n 数字,其中数字由字符列表表示。
例如,
对于以 5 为基数的数字(其中 n = 5)限制为 4 个位置,并且以 5 为基数的数字由列表表示:
digits=['a','b','c','d','e']
增量看起来像
a, b, c, d, e, aa, ab, ac, ad, ae, ba, bb, bc, ... , eeee
在 n=5 或 n=105 处执行此操作的 python 中最实用的方法是什么?
请您参考如下方法:
你可以用itertools.product得到结果, 像这样
>>> from itertools import product
>>> base = 3
>>> ["".join(item) for i in range(1, base) for item in product('abcde', repeat=i)])
['a',
'b',
'c',
'd',
'e',
'aa',
'ab',
'ac',
'ad',
'ae',
'ba',
'bb',
'bc',
'bd',
'be',
'ca',
'cb',
'cc',
'cd',
'ce',
'da',
'db',
'dc',
'dd',
'de',
'ea',
'eb',
'ec',
'ed',
'ee']
What is the most pragmatic approach in python to do this where n=5 or n=105
我会说,根本不要创建列表。您可能会耗尽计算机的内存。最好使用迭代器并在需要时使用该值。这正是 product 返回迭代器的原因。
