2012-03-14 81 views
0

我是新来的Python编程 为什么这个任务值K是给“无”在上面的例子中列表值Python列表概念

> >>> l=[2,3,4] 
> >>> k=l.append(14) 
> >>> print k 
None 
> >>> print l 
[2, 3, 4, 14] 

,我的14个值添加到列表中,然后分配到k但k正在打印无请告诉我为什么打印无而不是附加列表?

感谢 mukthyar

+1

为什么你指望它打印后附名单?您是否阅读过文档? – 2012-03-14 07:12:07

+0

rel:http://stackoverflow.com/questions/1452995/why-doesnt-a-python-dict-update-return-the-object – georg 2012-03-14 08:19:46

回答

7

append改变当前目录,不返回任何东西。使用方法:(。.append()的.sort(),等)

k = l + [14] 

k = l[:]  # Copy list 
k.append(14) 
4

Python中的大多数方法,其发生变异的情况下不返回对象的一个​​副本。因此,l.append(X)实际上会像l.sort()那样返回“None”。

你可能想使用更多的东西一样:

l.append(14) 
k = l[-1] 
1

你看到的是预料到的 - 的list.append方法不返回修改后的列表。如果你看看Python教程的relevant section,你会注意到返回有用值的方法被记录下来。

在交互式解释工作,你可以告诉大家,表达因缺乏输出的产生无:

>>> l = [1, 2, 3] 
>>> l.append(14) 
>>> 

如果(理论上)list.append返回的列表,你会看到以下内容:

>>> l = [1, 2, 3] 
>>> l.append(14) 
[1, 2, 3, 14] 
>>> 

以这种方式使用交互式解释器可以帮助您避免打印每个值。

1

在Python默认返回类型是None,所以如果你的函数没有返回任何值,那么你会从该函数得到None。对象有不同的功能。一些功能在同一个对象上执行,而其他功能则返回修改后的副本。例如list.sort将更改原始列表,而sorted将返回新的已排序列表而不更改原始列表。所以append正在处理对象,所以它会改变对象的值而不是返回新的修改后的副本。

希望这会使您的观点清楚地说明append方法。

1

从简单的文字附加功能蟒蛇文件

list.append(x) 
    Add an item to the end of the list; equivalent to a[len(a):] = [x]. 

返回不过

suggested reading