[a] + [b] 和 [a].extend([b]) 有什么区别?

What's the difference between [a] + [b] and [a].extend([b])?

在 Python 中有 2 种方法可以合并列表:

  1. ['a', 'b', 'c'] + ['x', 'y', 'z']

  2. ['a', 'b', 'c'].extend(['x', 'y', 'z'])

这两种方法有什么区别?


连接 2 个以上列表的更 Pythonic 方法是什么?

['a', 'b', 'c'] + [1, 2, 3] + ['x', 'y', 'z']
gucci_list = ['a', 'b', 'c']
gucci_list.extend([1, 2, 3])
gucci_list.extend(['x', 'y', 'z'])

两者结合如何?

['a', 'b', 'c'].extend([1, 2, 3] + ['x', 'y', 'z'])

['a', 'b', 'c'] + ['x', 'y', 'z'] 创建一个新列表。

['a', 'b', 'c'].extend(['x', 'y', 'z']) 通过向其中添加第二个列表来修改第一个列表。由于第一个列表未被变量引用,因此结果列表将不再可访问

第一个从两个创建一个新数组。 第二个改变了原始列表。

第一个语句从两个匿名列表中创建一个新列表并将其存储在变量中 new_list:

new_list = ['a', 'b', 'c'] + ['x', 'y', 'z']
#['a', 'b', 'c', 'x', 'y', 'z']

第二个语句创建一个匿名列表 ['a','b','c'] 并在其末尾附加另一个匿名列表(现在,第一个列表是 ['a', 'b', 'c', 'x', 'y', 'z'])。 但是,该列表仍然是匿名的,以后无法访问。由于方法extendreturns什么都没有,赋值后变量的值为None.

new_list = ['a', 'b', 'c'].extend(['x', 'y', 'z'])
#None

第二个语句可以通过首先命名列表然后改变它来变得有用:

old_list = ['a', 'b', 'c']
old_list.extend(['x', 'y', 'z']) # Now, the old list is a new list