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

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?

  • bitfucker@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    4 months ago

    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;
    }
    

    A 1 to 1 correspondent might looks like ths:

    a = range(10) # 0,1,2,etc...
    b = []
    for x in a:
      b.append(x*2)
    

    However 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.

    • librejoe@lemmy.worldOP
      link
      fedilink
      arrow-up
      1
      ·
      4 months ago

      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.