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?

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

    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.

    • bitfucker
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      5 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
        ·
        5 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.