Created: January 24, 2022 9:58 PM
今天在开发的时候,遇到一个问题,就是将两个python 的list对象数据进行合并,有如下方法可以解决。
例如:
In [2]: list2 = ['hello', 'world', 'combine']
In [3]: list3 = list1 + list2
In [4]: list3
Out[4]: ['a', 'b', 1, 2, 3, 'hello', 'world', 'combine']
接上面的运算,这里在定义一个tmp,值为list1的值,这里使用extend,将list2 的数据和tmp的数据进行合并,之后输出tmp 和list1,结果都是一样的。
所以这里有一个知识点,就是 = 是浅拷贝,就是只拷贝这个对象的引用。
In [5]: tmp = list1
In [6]: tmp
Out[6]: ['a', 'b', 1, 2, 3]
In [7]: tmp.extend(list2)
In [8]: tmp
Out[8]: ['a', 'b', 1, 2, 3, 'hello', 'world', 'combine']
In [9]: list1
Out[9]: ['a', 'b', 1, 2, 3, 'hello', 'world', 'combine']
这里我们使用copy 中的深拷贝,在重复上面的操作,大家可以看出差别
# 分割线
In [10]: import copy
In [11]: tmp2 = copy.deepcopy(list2)
In [12]: tmp2.extend(list2)
In [13]: tmp2
Out[13]: ['hello', 'world', 'combine', 'hello', 'world', 'combine']
In [14]: list2
Out[14]: ['hello', 'world', 'combine']
利用append就不算两个list对象的操作了,但是也可以了解这个用法。
In [15]: list2
Out[15]: ['hello', 'world', 'combine']
In [16]: list2.append('girl')
In [17]: list2
Out[17]: ['hello', 'world', 'combine', 'girl']