On Tue, Aug 27, 2002 at 01:56:36AM -0400, Raymond Hettinger wrote:
From: "Oren Tirosh"
[f(x, y) for x in X for y in Y]
is equivalent to:
[f(x, y) for x, y in cartesian(X, Y)]
Is the order guaranteed to be the same?
Yes. """\ Combinatorial generators. All generators below have the property of yielding successive results in sorted order, given than input sequences were already sorted. """
Will each work the same for a non-restartable iterator, say a file object (equivalently put, does the second one read Y once or many times)?
They have exactly the same re-iterability wart as nested loops or list comprehensions - an exhausted iterator is indistinguishable from an empty container.
Would Descartes object to his name being used thusly?
The cartesian product is a set operation and therefore has no defined order. When generating it you need some specific order and this one makes the most sense. If you use it with a 'nested loop' mindset instead of a 'set theory' mindset Rene would have had some grounds for objection :-) Oren