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

后端 未结 4 771
臣服心动
臣服心动 2021-01-11 10:33

I have been trying this a lot.

>>> x = [4,5]
>>> y = x.append(7)
>>> print y
None
>>>print x
[4, 5, 7]

相关标签:
4条回答
  • 2021-01-11 11:07

    The y is None because the append() method doesn't return the modified list (which from your code you are expecting).

    So you can either split the statement,

    y = x.append(7)
    

    into

    x.append(7)
    y = x
    

    OR use,

    y = x + [7]
    

    The second statement is more cleaner and creates a new list from x.

    Just a note: Updating y won't make any updates in x as in the first statement it does. If you want to avoid this use copy.copy

    0 讨论(0)
  • 2021-01-11 11:09

    You can do

    x = [4,5]
    y = x + [7]
    # x = [4, 5]
    # y = [4, 5, 7]
    
    0 讨论(0)
  • 2021-01-11 11:10

    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.

    0 讨论(0)
  • 2021-01-11 11:13

    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]
    
    0 讨论(0)
提交回复
热议问题