Why can't I append to list inside of a list comprehension?

https://lemmy.world/post/16921344

Why can't I append to list inside of a list comprehension? - Lemmy.World

I’m new to programming a bit, and am learning python so I can learn flask, using the python crash course book. I was learning about list comprehension but it briefly talks about it. If I do > list[list.append(value) for value in range(1, 20)]> it doesn’t work. Would this be some sort of recursive expression that is not possible?

List comprehension is not whatever you’re doing there. An example of list comprehension:

list = [value*2 for value in range(1, 20)]

See, list comprehension is used to make a list from an existing list. The value of the new list is defined by a function. In this case, the value of a will be 2,4,6, etc.

Your current syntax list[…], is trying to access an element of a list.

So you cannot use methods inside a list comprehension, only binary operators and the function range?

You can. Whatever the method returns will be the element of that list. So if for example I do this:

def mul(x): return x*2 list = [mul(value) for value in range(1,20)]

It will have the same effect. But this:

def mul(x): return list = [mul(value) for value in range(1,20)]

Will just makes the list element all null

Thanks for the response.

I am aware somewhat of what an array is, as i’ve dabbled with them in C, and know they can be multi-dimensional. Sorry if I’m being blind, but all I see are function calls in that list comprehension. I think what im asking is stupid, as the range function is returning a list populated.

No problems. Learning a new concept is not stupid. So you are familiar with C. In C term, you are likely to do something like this:

int a[10] = {0}; // Just imagine this is 0,1,2,etc... int b[10] = {0}; for (int i=0; i < 10; i++) { b[i] = a[i]*2; }

in python, you can then simplify to this:

a = range(10) # Same as before, 0,1,2,etc... b = [x*2 for x in a] # This is also works b = [x*2 for x in [0,1,2,...]]

Remember that list comprehension is used to make a new list, not just iteration. If you want to do something other than making a list from another list, it is better to use iteration. List comprehension is just “syntactic sugar” so to speak. The concept comes from functional programming paradigm.

Great explanation! I don’t know too much C, just a bit here and there, and my dad’s copy of K&R C he gave to me.