python中利用非循環的方法將兩個List列表中的內容進行合並
在處理字符串、目錄和排序信息的時候,經常需要將兩個列表進行合並。但利用for循環逐個插入會十分繁瑣,利用下面的方法可以快速方便的進行列表內容的合並。
1.+
運算直接合並
list_a = ['a','b','c']
list_b = ['d','e','f','g']
list_ab = list_a + list_b
print(list_ab)
>>> ['a', 'b', 'c', 'd', 'e', 'f', 'g']
由於列表可以保存各類對象,所以內容類型不同的列表也可以合並:
list_num = [1,2,3,4,5]
list_set = [{0},{1}]
list_dict = [{'key0':0},{'key1':1}]
list_mix = list_a + list_num + list_set + list_dict
print(list_mix)
>>> ['a', 'b', 'c', 1, 2, 3, 4, 5, set([0]), set([1]), {'key0': 0}, {'key1': 1}]
2.extend()
方法
list_a = ['a','b','c']
list_b = ['d','e','f','g']
list_a.extend(list_b)
print(list_a)
>>> ['a', 'b', 'c', 'd', 'e', 'f', 'g']
這種方法直接在原有列表后加上了需要合並的新列表,擴增的原有的列表。
內存位置沒有改變,內容被擴充,可以借助id()
函數來查看:
list_a = ['a','b','c']
id1 = id(list_a)
list_b = ['d','e','f','g']
list_a.extend(list_b)
id2 = id(list_a)
print(id1==id2)
>>> True
3.基於slice的插入
list_a = ['a','b','c']
list_b = ['d','e','f','g']
list_a[0:0] = list_b #列表中[n,n],表示在列表的第n+1個位置,將對應列表逐個元素插入合並
print(list_a)
#千萬不能寫成 list_a[0] = list_b,這會使得list_a[0]變為一個列表,而不是列表內的元素。
>>> ['d', 'e', 'f', 'g', 'a', 'b', 'c']
也可以修改位置,靈活變更合並的序列在原列表中的位置:
list_a = ['a','b','c']
list_b = ['d','e','f','g']
list_a[-1:-1] = list_b #合並至最末尾
print(list_a)
>>> ['a', 'b', 'd', 'e', 'f', 'g', 'c']
合並到第二個位置:
list_a = ['a','b','c']
list_b = ['d','e','f','g']
list_a[1:1] = list_b #合並至第二個位置
print(list_a)
>>> ['a', 'd', 'e', 'f', 'g', 'b', 'c']
*4.“指針”/解包操作
Python >= 3.5 PEP 448中可以使用*
來進行類似指針的操作:
list_a = ['a','b','c']
list_b = ['d','e','f','g']
list_ab = [*list_a,*list_b]
print(list_ab)
>>> ['a', 'b', 'c', 'd', 'e', 'f', 'g']
ref:
https://www.jdoodle.com/python3-programming-online
https://www.tutorialspoint.com/index.htm
http://www.compileonline.com/index.htm
https://www.onlinegdb.com/online_python_interpreter
https://www.python.org/dev/peps/pep-0448/
https://stackoverflow.com/questions/1720421/how-to-concatenate-two-lists-in-python
https://blog.csdn.net/ppdyhappy/article/details/53213349
https://blog.csdn.net/fragmentalice/article/details/81363494
https://www.cnblogs.com/qingyuanjushi/p/8409949.html
https://blog.csdn.net/roytao2/article/details/54180182