【问题标题】:Python list.append as an argumentPython list.append 作为参数
【发布时间】:2011-11-06 11:24:37
【问题描述】:

为什么下面的代码给出“无”?我该如何解决这个问题?

def f1(list1):
    f2(list1.append(2))

def f2(list1):
    print(list1)

f1([1])

什么也不起作用:

def f1(list1):
    arg1 = list1.append(2) 
    f2(arg1)

【问题讨论】:

    标签: python list python-3.x


    【解决方案1】:

    通常,改变对象的 Python 方法(例如 list.appendlist.extendlist.sort)返回 None

    如果您想打印出新列表:

    def f1(list1):    
        list1.append(2)
        f2(list1)
    

    【讨论】:

    • 谢谢,这解释了很多。
    • 或者,编写一个表达式,将修改后的列表生成为单独的值。例如,f2(list1 + [2])
    【解决方案2】:

    这取决于你想做什么。如果您希望在调用 f1 后更改 list1,请使用

    def f1(list1):
        list1.append(2)
        f2(list1)
    

    看看会发生什么:

    >>> l = [1]
    >>> f1(l)       # Modifies l in-place!
    [1, 2]
    >>> l
    [1, 2]
    

    如果您不想更改 list1

    def f1(list1):
        f2(list1 + [2])
    

    现在看到这个:

    >>> l = [1]
    >>> f1(l)       # Leaves l alone!
    [1, 2]
    >>> l
    [1]
    

    【讨论】:

    • 谢谢!这就是我一直在寻找的。​​span>
    猜你喜欢
    • 2019-05-03
    • 1970-01-01
    • 2016-03-11
    • 2011-08-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 2013-05-23
    相关资源
    最近更新 更多