Tôi mong chờ đoạn sau đây để cho tôi một iterator năng suất cặp từ sản phẩm Descartes của hai iterables đầu vào:Tại sao tôi nhận được một MemoryError với itertools.product?
$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import itertools
>>> one = xrange(0, 10**9)
>>> two = (1,)
>>> prods = itertools.product(one, two)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
MemoryError
Thay vào đó, tôi nhận được một MemoryError
. Nhưng tôi nghĩ rằng itertools.product
không lưu trữ kết quả trung gian trong bộ nhớ, vì vậy điều gì gây ra MemoryError
?
Cảm ơn bạn đã điền vào động lực thực hiện. Tôi cho rằng cách duy nhất khác để giải quyết vấn đề này là nhấn mạnh rằng các vòng lặp được cung cấp có thể sao chép được bằng cách nào đó. – detly
Tôi có nguồn gốc của vấn đề. Nhưng một cách giải quyết khác là liệu có cần chức năng của sản phẩm() không? –