Python Forum
Append list into list within a for loop - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Append list into list within a for loop (/thread-28479.html)



Append list into list within a for loop - rama27 - Jul-20-2020

Hi, I would like to append lists into one list in a for loop. See my code bellow:

def triangle(n: int):
    pole = []
    seznam = []
    i = 0
    j = 0  

    while j < n :          
        while i <= j:
            a = pole.append(1)
            print(pole)  
            seznam.append(a)            
            i +=1 
        j +=1
            
    print(seznam)

####END
My output for triangle(4) is
Output:
[1] [1, 1] [1, 1, 1] [1, 1, 1, 1] [None, None, None, None]
But desired output for triangle(4) is:
Output:
[[1], [1, 1], [1, 1, 1], [1, 1, 1, 1]]
Can you help me, how can I replace "None" with lists of 1? Thank you very much!


RE: Append list into list within a for loop - bowlofred - Jul-20-2020

Please put your posted code inside python tags. Otherwise, we cannot read the code properly.

The expression a = pole.append(1) seems incorrect.

pole.append(1) will add a new element to the list "pole". But it will not return anything. "a" will be None after this operation. What do you want "a" to be?

>>> a = ['some', 'list'].append(1)
>>> a == None
True



RE: Append list into list within a for loop - deanhystad - Jul-21-2020

list.append(item) does not return a list. The reason for this is append modifies the list instead of creating a new list.

Your function should return a list but it doesn't. You throw the list away as soon as the function exits. You try to get the list by using a variable that has the same name (seznam) as a local variable in the function, but will not work. This doesn't matter much because you never call your triangle function anyway.

You are writing this program in Python, so use Python loops, not C loops.
five_a = []
for a in 'aaaaa':
     five_a .append(a)
# or
for _ in range(5):
    five_a .append('a')
There are shorter ways than using a loop to initialize a list. You can use a list comprehension:
five_a  = ['a' for _ in range(5)])
Or you can use an initializer.
five_a = (['a']*(5))
To get a list of lists you could have a loop inside of a loop, or you could put an list comprehension or an initialize inside a loop. You could also use a list comprehension that uses a generator to make the inner and outer lists. Or you could use a generator generator inside of a generator. Your triangle generator program can be written in a single line of Python code.