通过base-n数增加

Joh*_*ohn 1 python iteration base

我试图递增所有可能的base-n数字,其中数字由字符列表表示.

例如,

对于基数为5的数字(其中n = 5)限制为4个位置,基数为5的数字由列表表示:

digits=['a','b','c','d','e']
Run Code Online (Sandbox Code Playgroud)

增量看起来像

a, b, c, d, e, aa, ab, ac, ad, ae, ba, bb, bc, ... , eeee
Run Code Online (Sandbox Code Playgroud)

什么是蟒蛇最务实的方法来做到这一点,其中n=5n=105

Anc*_*wal 5

你可以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']
Run Code Online (Sandbox Code Playgroud)

在n = 5或n = 105的情况下,python中最实用的方法是什么?

我想说,根本不要创建列表.你可能会耗尽计算机的内存.更好地使用迭代器并在需要时使用该值.这正是product返回迭代器的原因.