Skip to main content
 首页 » 编程设计

python之以 n 为基数递增

2025年05月04日30lovecherry

我正在尝试递增所有可能的 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 返回迭代器的原因。