On Tue, 18 Oct 2016 10:43 pm, Sayth Renshaw wrote:

> I was solving a problem to create a generator comprehension with 'Got '
> and a number for each in range 10.
> This I did however I also get a list of None. I don't understand where
> none comes from. Can you please clarify?

You get None because print() returns None.

Try this:

result = print("Hello")
result is None

Every time you call print(), it returns None. Normally that just gets thrown
away, and no harm is done, but when you do it in a generator expression,
the None values are collected and returned.

Your code:

a = (print("Got {0}".format(num[0])) for num in enumerate(range(10)))
b = list(a)

is equivalent to this:

b = []
for two_numbers in enumerate(range(10)):
    num = two_numbers[0]  # pick the first number
    message = "Got {0}".format(num)
    result = print(message)


“Cheer up,” they said, “things could be worse.” So I cheered up, and sure
enough, things got worse.


Reply via email to