Skip to main content
 首页 » 编程设计

python之排列字符列表占用了我所有的内存(Python)

2025年05月04日8webabcd

我正在构建所有字母和数字的字典。这段代码的问题是“在一秒钟之内消耗了我 100% 的内存”。你认为我的实现不好吗? 任何帮助表示赞赏。

from timeit import Timer 
from itertools import permutations 
dictionary = [] 
small_alpha = map(chr, range(97,123)) 
 
lookup.append(small_alpha) 
 
def test(): 
    for i in permutations(lookup, 10): 
        dictionary.append(''.join(i)) 
 
if __name__ == '__main__': 
    test() 

(已编辑) 我是一个受过良好教育的人。没有黑客的意图。这实际上是不可能的,即使我有 100 台机器。没有人能计算出这么大的数字。只是在尝试在某种程度上是否可行

请您参考如下方法:

有 36!/(36-10)! = 10 个字母数字字符的 922,393,263,052,800 次排列(约 1 千万亿次)。当然,这会占用你所有的内存。

假设每个字符串需要 32 个字节来存储(指针 8 个字节,长度 8 个字节,内容 16 个字节*,在 64 位机器上),这需要 26.2 PiB内存。

没有办法在普通机器中存储所有排列。请说明您实际想做什么。


即使只有字母表,排列的数量仍然是 19,275,223,968,000(约 20 万亿),并且每个字符串 32 字节仍然需要 561 TiB 的内存。