在python中list1.append()和list1 + list2之间的实际区别是什么? 除此之外,为什么以下语句返回NULL?
print(list1.append(list2))
{其中list1和list2是2个简单列表}
答案 0 :(得分:1)
list.append()
修改对象并返回None。
[] + []
创建并“返回”新列表。
https://docs.python.org/2.7/tutorial/datastructures.html#more-on-lists
推荐阅读:http://docs.python-guide.org/en/latest/writing/gotchas/
答案 1 :(得分:1)
返回None
是一种传达操作是副作用的方式 - 也就是说,它正在改变其中一个操作数,而不是保持它们不变并返回一个新值。
list1.append(list2)
... 更改list1
,使其成为此类别的成员。
比较以下两个代码块:
# in this case, it's obvious that list1 was changed
list1.append(list2)
print list1
...和
# in this case, you as a reader don't know if list1 was changed,
# unless you already know the semantics of list.append.
print list1.append(list2)
禁止后者(使其变得无用)从而增强了语言的可读性。
答案 2 :(得分:0)
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.append(b) # append just appends the variable to the next index and returns None
>>> print a
[1,2,3,[4,5,6]]
>>> a.extend(b) # Extend takes a list as input and extends the main list
[1,2,3,4,5,6]
>>> a+b # + is exactly same as extend
[1,2,3,4,5,6]
答案 3 :(得分:0)
打印函数时,打印它返回的内容,append方法不返回任何内容。但是,您的列表现在有一个新元素。您可以打印列表以查看所做的更改。
list1 + list2
表示您将2个列表合并为一个大列表。
list1.append(element)
在列表末尾添加一个元素。
这是附加vs +
的示例>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>>
>>> a.append(b)
>>> a
[1, 2, 3, [4, 5, 6]]