Python 3.x 如何减少具有重复数字的大型笛卡尔积的内存使用?

Python 3.x 如何减少具有重复数字的大型笛卡尔积的内存使用?,python-3.x,algorithm,itertools,cartesian-product,Python 3.x,Algorithm,Itertools,Cartesian Product,在Python3中,给定一个数字列表[1,1,2,3],我将返回所有具有重复数字的排列,直到某一长度的数字。所以我们会说x=3,这意味着结果是 1. 11 111 112 113 . . 3. 33 312 321 333 我把它简化为列表理解,希望它能解决我的内存消耗问题,但我没有看到显著的增长 我能做些什么来减少一个大的输入列表(比如9个元素)所需的内存 如果int(''.join(_set))python int取长数组大小,在数组中可以使用常规int,则返回和(sum(1表示乘积中的_s

在Python3中,给定一个数字列表[1,1,2,3],我将返回所有具有重复数字的排列,直到某一长度的数字。所以我们会说x=3,这意味着结果是 1. 11 111 112 113 . . 3. 33 312 321 333

我把它简化为列表理解,希望它能解决我的内存消耗问题,但我没有看到显著的增长

我能做些什么来减少一个大的输入列表(比如9个元素)所需的内存


如果int(''.join(_set))python int取长数组大小,在数组中可以使用常规int,则返回和(sum(1表示乘积中的_set(数字,repeat=i))

from array import array
import sys
a = [] #regular list
b = array('I') # int
c = array('B') # short, probably cant take too long numbers
for i in range(100):
    a.append(i)
    b.append(i)
    c.append(i)


#>>> sys.getsizeof(a)
#5496
#>>> sys.getsizeof(b)
#2592
#>>> sys.getsizeof(c)
#696




我应该使用更好的措辞。我关心的是输入列表的长度,而不是每个数字的位数。我已经更新了我的帖子,以便使用更好的措辞。看起来你是在总结你得到的最终列表?详细说明和解释你正试图解决的实际问题符合你的最大利益,这可能会有一个更大的问题一个比你想要的更好的解决方案