如何在Python中通过重复获得每个6元素的置换?

问题描述 投票:0回答:1

[我想从“ abcdefghijklmnopqrstuvwxyz0123456789”创建所有可能的6元素排列的列表,因此例如应输出:

['aaaaaa','aaaaab','aaaaac'...,'aaaaa0','aaaaa1'...,'aaaaba','aaaabb'...]依此类推。

这是我尝试过的:

import itertools

dictionary = 'abcdefghijklmnopqrstuvwxyz0123456789'
print(list(itertools.product(dictionary, repeat=6)))

但是我遇到了MemoryError,然后我的计算机完全冻结了,所以有没有更有效的方法来计算此列表?

((我正在使用Python 3.8 64位)

python permutation
1个回答
2
投票

您知道您的清单要多久吗?它是36 ** 6 = 2176782336项目。内存太大了。您应该使用过发电机:

dictionary = 'abcdefghijklmnopqrstuvwxyz0123456789'
for x in itertools.product(dictionary, repeat=6):
    print(''.join(x))

0
投票

输出列表包含36**6 = 2176782336个元素。请注意,itertools.product返回一个元组的迭代器,因此与其将迭代器转换为列表,还不如将其迭代到列表上。

>>> for x in itertools.product(dictionary, repeat=6):
...     print(x)
... 
('a', 'a', 'a', 'a', 'a', 'a')
('a', 'a', 'a', 'a', 'a', 'b')
('a', 'a', 'a', 'a', 'a', 'c')
('a', 'a', 'a', 'a', 'a', 'd')
('a', 'a', 'a', 'a', 'a', 'e')
('a', 'a', 'a', 'a', 'a', 'f')
© www.soinside.com 2019 - 2024. All rights reserved.