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

Reply via email to