串列是python中內置有序可變序列,串列的所有元素放在一堆中括號"{}"中,并使用逗號隔開
1.串列的創建
使用“=”直接創建一個串列
>>> x=[3,34]
>>> x
[3, 34]
>>> x=[3,2,5,[56],[7,9]]
>>> x
[3, 2, 5, [56], [7, 9]]
也可以使用list()函式將元組、range物件、字串或其他型別的迭代物件型別的資料轉換為串列,
>>> a_list=list((3,5,7,9))
>>> a_list
[3, 5, 7, 9]
>>> list (range(1,10,3))
[1, 4, 7]
>>> list('hello world')
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
2.可以使用“+”運算子將元素添加到串列中,
>>> a_list=[1,2,3]
>>> a_list=a_list + [4]
>>> a_list
[1, 2, 3, 4]
嚴格意義上這種方法是創建了一個新的串列,并將原串列中的元素和新元素依次復制到新串列的記憶體空間,
3.append()方法,原地修改串列,是真正意義上的在串列尾部添加元素,速度較快,
>>> a_list.append(9)
>>> a_list
[1, 2, 3, 4, 9]
這個方法不改變串列在記憶體中的首地址,
4.python采用的是基于值得自動記憶體管理方式,當為物件修改值時,并不是真的直接修改變數的值,而是使變數指向新的值,這對于python所有型別的變數都是一樣的,
>>> a=[1,2,3]
>>> id(a) #回傳物件的記憶體地址
2848185370368
>>> a=[1,2]
>>> id(a)
2848185620032
5.使用串列物件的extend()方法可以將另一個迭代物件的所有元素添加至該串列物件尾部,通過extend()方法來增加串列元素也不改變其記憶體首地址,屬于原地操作,
>>> a=[1,2,3]
>>> id(a)
2848185370368
>>> a=[1,2]
>>> id(a)
2848185620032
>>> a.extend([1,2,3])
>>> a
[1, 2, 1, 2, 3]
>>> a_list.extend([21,31])
>>> a_list
[1, 2, 3, 4, 9, 21, 31]
>>> a_list.extend([12,13])
>>> a_list
[1, 2, 3, 4, 9, 21, 31, 12, 13]
>>> id(a)
2848185620032
6.使用串列物件的insert()方法將元素添加至串列的指定位置,
>>> a_list.insert(9,11)
>>> a_list
[1, 2, 3, 4, 9, 21, 31, 12, 9, 11, 13]
7.應盡量從串列尾部進行元素的增加與洗掉操作,
串列的insert()可以在串列的任意位置插入元素,但由于串列的自動記憶體管理功能,insert()方法會涉及到插入位置之后所有元素的移動,這會影響處理速度,
類似的還有后面介紹的remove()方法以及使用pop()函式彈出串列非尾部元素和使用del命令洗掉串列尾部元素的情況,
8.使用乘法來擴展串列物件,將串列與整數相乘,生成一個新串列,新串列是元串列中元素的重復,
>>> alist=[1,3,5]
>>> blist=alist
>>> id(alist)
2848177708416>>> id(blist)
2848177708416
>>> alist=alist*3
>>> alist
[1, 3, 5, 1, 3, 5, 1, 3, 5]
>>> blist
[1, 3, 5]
>>> id(alist)
2848185306368
>>> id(blist)
2848177708416
9.當使用*運算子將包含串列的串列重讀并創建新串列是,并不創建元素的復制,而是創建已有物件的參考,因此,當修改其中一個值時,相應的參考也會被修改,
>>> x=[[None]*2]*3
>>> x
[[None, None], [None, None], [None, None]]>>> x=[[1,2,3]]*4
>>> x[0][0]=10
>>> x
[[10, 2, 3], [10, 2, 3], [10, 2, 3], [10, 2, 3]]
>>>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/168988.html
標籤:Python
