Il 20/12/2020 21:00, danilob ha scritto:
Hi,
I'm an absolute beginner in Python (and in English too ;-)
Running this code:
--------------
# Python 3.9.0
a = [[1, 2, 0, 3, 0],
[0, 4, 5, 0, 6],
[7, 0, 8, 0, 9],
[2, 3, 0, 0, 1],
[0, 0, 1, 8, 0]]
b = ((x[0] for x in a))
print(list(b))
print(list(b))
---------------
I get this output:
[1, 0, 7, 2, 0]
[]
I don't know why the second print() output shows an empty list.
Is it possible that the first print() call might have changed the value
of "b"?
Thank you in advance.
You should see a generator as a container emptying while you are reading
it, so you should recreate it every time:
################################
# Python 3.9.0
a = [[1, 2, 0, 3, 0],
[0, 4, 5, 0, 6],
[7, 0, 8, 0, 9],
[2, 3, 0, 0, 1],
[0, 0, 1, 8, 0]]
b = lambda : (x[0] for x in a)
print(list(b()))
print(list(b()))
output:
[1, 0, 7, 2, 0]
[1, 0, 7, 2, 0]
################################
--
https://mail.python.org/mailman/listinfo/python-list