我试图递增所有可能的base-n数字,其中数字由字符列表表示。
例如,
对于基数为5的数字(其中$total = car::getTotal();
if($total > 8) {
for($i = 1; $i <= intval(ceil(1.0 * $total / $limit)); $i++) {
echo '<a href="index.php?page=' . $i . '">' . $i . '</a>;
}
}
)限制为4个位置,基数为5的数字由列表表示:
n = 5
增量看起来像
digits=['a','b','c','d','e']
在a, b, c, d, e, aa, ab, ac, ad, ae, ba, bb, bc, ... , eeee
或n=5
答案 0 :(得分: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']
在python中最实用的方法是什么,n = 5或n = 105
我想说,根本不要创建列表。你可能会耗尽计算机的内存。更好地使用迭代器并在需要时使用该值。这正是product
返回迭代器的原因。