我有一个脚本可以生成所有可能的EAN-13条形码。问题是它没有运行因为我相信我得到了算术溢出。是否有可能对此进行优化,以便获得所有可能的值? EAN-13条形码看起来像 0000000000001 , 1000000000000 或 0293401925347 等。总组合应为10 ^ 13:
for k in range(13, 14):
for number in list(product(range(13), repeat=k)):
barcode = "".join(map(str, number))
print(barcode)
答案 0 :(得分:2)
您的代码存在一些问题。让我们来看看差异
from itertools import product
k = 13
for number in product(range(10), repeat = k):
barcode = "".join(map(str, number))
print(barcode)
1)k
的循环位于range(13, 14)
。这与k=13
相同
2)您的range(13)
错误,因为我们只想将数字0
加入9
3)你写了list(product()
。这将创建一个包含10 ^ 13个数字的列表,这需要大量的空间和时间来生成。直接在itertools
对象上迭代以避免这种情况。如果您想了解有关迭代器和生成器的更多信息,请查看此introduction to generators。 Tldr:优势:他们只会在被问到时生成下一个元素,节省内存空间和元素的计算时间,我们不会使用。缺点:它们排气,即一旦使用了生成的元件,发电机就不能再进入。