x = 'aaaabbbccd'
new = list(itertools.groupby(x))
[print(i) for i in new]
for i in new:
print(i)
The result for line 2 is is something like:
('a', <itertools._grouper object at 0x0000014163062EB0>)
('b', <itertools._grouper object at 0x0000014163062FD0>)
('c', <itertools._grouper object at 0x0000014163062F70>)
('d', <itertools._grouper object at 0x0000014162991BB0>)
[None, None, None, None]
Where as the result for the normal for loop is:
('a', <itertools._grouper object at 0x0000014163062EB0>)
('b', <itertools._grouper object at 0x0000014163062FD0>)
('c', <itertools._grouper object at 0x0000014163062F70>)
('d', <itertools._grouper object at 0x0000014162991BB0>)
Why do I get the extra [None, None, None, None]
in case of list comprehension?
Advertisement
Answer
A list comprehension is used to comprehend (Make) a list. It is useful only when making lists. However, here you are not making a list, so it is not recommended to use list comprehension. You only print the value and not store it as a list. Here, use a for a loop.
The reason you get None
is – the list comprehension basically becomes a list of print()
functions like [print(...),print(...)....]
So when you call them it becomes like – print(print(...))
, which, if you try this code, will return a None along with the output.
So, do not use list comprehension unless you are using it to build a list.