python列表型別
阿新 • • 發佈:2018-12-20
序列
序列是Python中最基本的資料結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。
Python中常見的序列結構有:字串、列表、集合、元組、字典等。
序列都可以進行的操作包括索引,切片,加,乘,檢查成員。
例如一個整數序列a=[10,20,30,40],可以表示為:
10 | 20 | 30 | 40 |
---|
由於python3中一切皆物件,在記憶體中實際儲存的是物件的地址,而非物件的值:
列表建立
- 基本語法 [] 建立
>>> a = [1,2,3,4]
>>> a
[1, 2, 3, 4]
- list()建立
list可將迭代資料轉化為列表:
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list("Rico")
['R', 'i', 'c', 'o']
list()產生一個空列表:
>>> list()
[]
- 使用推導式建立:
>>> a = [2*x for x in range(5)]
>>> a
[0, 2, 4, 6, 8]
>>> a = [x for x in range(100) if x%5 == 0]
>>> a
[0, 5, 10, 15, 20, 25, 30 , 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
列表元素的增加和刪除
- +運算子操作 生成一個新的列表,將兩個列表拼接為一個新列表:
>>> a = [0,1,2,3,4]
>>> a + [5]
[0, 1, 2, 3, 4, 5]
>>> a = [0,1,2]
>>> b= [3,4,5]
>>> a+b
[0, 1, 2, 3, 4, 5]
- 使用.append()的方法 在列表尾部新增一個元素:
>>> a = [0,1,2,3, 4]
>>> a.append(5)
>>> a
[0, 1, 2, 3, 4, 5]
- 使用.exrend()的方法: 將目標所有元素新增到列表的尾部,效果類似於+拼接
>>> a = [0,1,2]
>>> b = [3,4,5]
>>> a.extend(b)
>>> a
[0, 1, 2, 3, 4, 5]
注意:用 + 拼接和 .append() 、.extend()的區別:+修改的整個列表物件,而.append()僅僅修改了物件的值。
>>> a = [0,1,2,3,4]
>>> id(a)
2394342943176
>>> a.append(5)
>>> a
[0, 1, 2, 3, 4, 5]
>>> id(a)
2394342943176
>>> a = [0,1,2]
>>> b = [3,4,5]
>>> id(a)
2394342942472
>>> a.extend(b)
>>> a
[0, 1, 2, 3, 4, 5]
>>> id(a)
2394342942472
>>> a = [0,1,2,3,4]
>>> id(a)
2394342943176
>>> a = a+[5]
>>> id(a)
2394342849224
因此通常不推薦使用+拼接操作。
- .insert()的使用 在將物件插入列表的某一個位置 語法格式:list.insert(index, obj)
>>> a = [0,1,3,4,5]
>>> a.insert(2,6)
>>> a
[0, 1, 6, 3, 4, 5]
列表元素的刪除
- del 刪除 刪除表格指定位置的元素
>>> a = [10,20,66,40,50]
>>> del a[2]
>>> a
[10, 20, 40, 50]
原理: 將目標元素刪除,其後的元素位置都會發生變化。
- .pop()方法 刪除並返回指定位置元素,如果未指定則預設刪除列表最後一個元素。
>>> a = [10,20,66,40,50]
>>> b = a.pop(2)
>>> b
66
>>> c = a.pop()
>>> c
50
>>> a
[10, 20, 40]
>>>
- .remove()方法 刪除首次出現的指定元素,若指定元素不存在則丟擲異常。
>>> a = [10,20,30,20,40,20,50]
>>> a.remove(20)
>>> a
[10, 30, 20, 40, 20, 50]
列表排序
- .sort(),修改原列表,不建立新列表的排序
list.sort() 升序排列
>>> a = [10,50,40,20,30]
>>> a.sort()
>>> a
[10, 20, 30, 40, 50]
list.sort(reverse=True) 降序排列
>>> a = [10,50,40,20,30]
>>> a.sort(reverse=True)
>>> a
[50, 40, 30, 20, 10]
- sorted(),新建列表的排序 通過內建函式sorted()進行排序,返回新列表,不對原列表進行修改。
sored()升序,sorted(list,reverse=True)降序
>>> a = [10,50,40,20,30]
>>> b = sorted(a)
>>> b
[10, 20, 30, 40, 50]
>>> a
[10, 50, 40, 20, 30]
>>> c = sorted(a,reverse=True)
>>> c
[50, 40, 30, 20, 10]
- .reverse(),列表反向排列
>>> a = [10,50,40,20,30]
>>> a.reverse()
>>> a
[30, 20, 40, 50, 10]
- reversed()返回迭代器 內建函式reversed()也支援逆序排列,與.reverse()不同的是,內建函式reversed()不對原列表做任何修改,而是返回一個逆序排列的迭代器物件。
>>> a = [10,50,40,20,30]
>>> b = reversed(a)
>>> b
<list_reverseiterator object at 0x000001D7090C6198>
>>> list(b)
[30, 20, 40, 50, 10]
>>> b
<list_reverseiterator object at 0x000001D7090C6198>
>>> list(b)
[]
從程式碼中可以看到,使用reversed()返回的不是一個列表,需要使用list()將迭代器中的儲存資訊傳遞到列表中。迭代器在使用之後會被釋放,所以只能使用一次。