How to add new value to a list without using 'append()' and then store the value in a newly created list?

Because the function append() modifies the list and returns None.

One of the best practices to do what you want to do is by using + operator.

Let's take your example :

>>> x = [4, 5]
>>> y = x + [7]
>>> x
[4, 5]
>>> y
[4, 5, 7]

The + operator creates a new list and leaves the original list unchanged.


This is possible because x.append() is a method of list x that mutates the list in-place. There is no need for a return value as all the method needs to do is perform a side effect. Therefore, it returns None, which you assign your variable y.

I think you want to either create a copy of x and append to that:

y = x[:]
y.append(7)

or assign y the result of a list operation that actually creates a new list:

y = x + [7]

You can do

x = [4,5]
y = x + [7]
# x = [4, 5]
# y = [4, 5, 7]