| 1 | initial version |
In your code, by replacing [] by () and range() by xrange(), you build a generator, that will loop in real time, without storing all values in a list:
sage: A = ((a,b,c,d) for a in xrange(100) for b in xrange (100) for c in xrange (100) for d in xrange (100))
sage: A
<generator object <genexpr> at 0x5d269b0>
sage: for f in A:
....: print f
(0, 0, 0, 0)
(0, 0, 0, 1)
(0, 0, 0, 2)
(0, 0, 0, 3)
(0, 0, 0, 4)
...
| 2 | No.2 Revision |
In your code, by just replacing [] by () and range() by xrange(), you build a generator, that will loop in real time, without storing all values in a list:list, saving a lot of memory:
sage: A = ((a,b,c,d) for a in xrange(100) for b in xrange (100) for c in xrange (100) for d in xrange (100))
sage: A
<generator object <genexpr> at 0x5d269b0>
sage: for f in A:
....: print f
(0, 0, 0, 0)
(0, 0, 0, 1)
(0, 0, 0, 2)
(0, 0, 0, 3)
(0, 0, 0, 4)
...
By the way, if all prescribed values are the same, you can also do:
sage: B = cartesian_product_iterator([xrange(100) for i in range(4)])
sage: for f in B:
....: print f
(0, 0, 0, 0)
(0, 0, 0, 1)
(0, 0, 0, 2)
(0, 0, 0, 3)
(0, 0, 0, 4)
...
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.