为什么下面的代码给出'None'?我该如何解决这个问题?Python list.append作为参数
def f1(list1):
f2(list1.append(2))
def f2(list1):
print(list1)
f1([1])
什么也不起作用:
def f1(list1):
arg1 = list1.append(2)
f2(arg1)
为什么下面的代码给出'None'?我该如何解决这个问题?Python list.append作为参数
def f1(list1):
f2(list1.append(2))
def f2(list1):
print(list1)
f1([1])
什么也不起作用:
def f1(list1):
arg1 = list1.append(2)
f2(arg1)
这取决于你想要做什么。如果你想list1
向f1
一个电话后发生了变化,使用
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]
在这种变异的物体(如list.append
,list.extend
,或list.sort
)返回None
一般来说,Python方法。
如果你想打印出新的列表:
def f1(list1):
list1.append(2)
f2(list1)
谢谢,这解释了很多。 – Ihmahr
或者,编写一个生成修改列表的表达式作为单独的值。例如,'f2(list1 + [2])'。 –
谢谢!这是我正在寻找的。 – Ihmahr