python:复制列表并一步追加

时间:2015-02-21 04:49:39

标签: list python-2.7 list-comprehension copying

我对python(使用2.7)有一个奇怪的反应。我正在尝试复制列表并同时向副本添加内容。这是代码:

myList = [1]
>>> newList = list(myList).append(2)
>>> newList
>>> print newList
None
>>> type(newList)
<type 'NoneType'>

为什么我得到一个NoneType对象而不是我附加的列表副本? 当我尝试将list1复制它作为list2多次并将list2的元素追加到list1中的那些时,我偶然发现了这一点。

>>> list1 = [1,2]
>>> list2 = [3,4]
>>> list3 = [list(list1).append(i) for i in list2]
>>> list3
[None, None]

我期待:

>>> list3
[[1,2,3],[1,2,4]]

为什么没有,没有?

非常感谢!

2 个答案:

答案 0 :(得分:0)

您可以通过添加额外的行来执行此操作:

myList=[1]
myList.append(2);newList=myList

您还可以直接扩展(追加)列表,如:

list1 = [1,2]
list2 = [3,4]
list1.extend(list2);list3=list1

如果你不想改变,那就试试这个:

list1 = [1,2]
list2 = [3,4]
list3=list1;list3.extend(list2)

还有:

myList=[1]
newList=myList;newList.append(2)

答案 1 :(得分:0)

append函数修改列表并返回None。 Newlist为None,因为append()直接修改列表,而不是返回修改后的列表。 此代码将创建新列表并一步添加到该列表中。

myList = [1]
newList = myList + [2]