python序列(一)列表的增加


 

列表是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]] >>> 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM