+ 2
Different list-makin in Python: list() vs []
#both structures works well: print([i for i in range(10)]) print(list(i for i in range(10))) #BUT........I Have Some Strange Result: #for both of them input is: 0 1 2 3 4 5 6 7 8 9 print(list(map(int,input().split()))) print([map(int,input().split())]) #So what a difference between them? You may run it here: https://code.sololearn.com/cjDu75gBAh1K
5 Respuestas
+ 3
(i for i in range(10)) is a generator object. Usually, it won't return anything until you "call" the single values with next() or with a for each loop:
a = (i for i in range(10))
print(type(a)) #output: <class 'generator'>
print(next(a)) #output: 0
print(next(a)) #output: 1
print(next(a)) #output: 2
for n in a:
print(n) #output: 3, 4, 5 etc.
If you use list(i for i in range(10)), you force the generator object to generate all values so that they can be put in a list.
So this is actually a relatively complex way to create a list.
[i for i in range(10)] is a list comprehension and is usally considered the "pythonic" way to create a list.
+ 2
@Julian Second one gives map object, not a list...
+ 2
dimon2101 yeah but that one wasn't in the question so i didn't think he/she was talking about that
+ 1
there pretty much isn't really a big differance.
+ 1
@Anna Thank you for nice answer!!! I feel some confusing...