N = [1, 2, 3]
print(n for n in N)
Results:
<generator object <genexpr> at 0x000000000108E780>
Why didn't it print?:
1
2
3
However the code:
sum(n for n in N)
Will sum up all the number in N.
Could you please tell me why sum() worked but print() failed?
Generator …
It's because you passed a generator to a function and that's what
__repr__
method of this generator returns. If you want to print what it would generate, you can use:or
or
or if you like comprehensions:
You have to be aware that the last method constructs a list filled with
None
.If you don't want to cast it as a list, you can try:
See: https://docs.python.org/3/tutorial/controlflow.html#tut-unpacking-arguments
You are literally printing a generator object representation
If you want on one line, try printing a list
Which is just
print(N)
If you want a line separated string, print that
Or write a regular loop and don't micro optimize the lines of code