在Python3中,给定一个数字列表[1,1,2,3],我将返回所有具有重复数字的排列,直到一定长度的数字。所以我们会说x=3,这意味着结果是1.11111112113。。3.33312321333
我把它简化为列表理解,希望它能解决我的内存消耗问题,但我没有看到显著的增长。
我可以做些什么来减少大输入列表(比如9个元素(所需的内存?
return sum(sum(1 for _set in product(digits, repeat=i) if int(''.join(_set)) <= n) for i in range(1, len(str(n)) + 1))
python int的大小相当于一个long,在数组中可以使用常规的int
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