Python中的列表,元組,字典以及集合的概念
阿新 • • 發佈:2018-12-19
一、列表,元組,字典以及集合的對比圖表
列表,元組,字典以及集合的對比圖表 | ||||
列表 list | 元組 tuple | 字典 dict | 集合 set | |
可否修改 | 可變 | 不可變 | 可變 | 可變 |
可否重複 | 可以 | 可以 | 可以 | 不可以 |
是否有序 | 有序 | 有序 | 無序 | 無序 |
儲存方式 | 元素值 | 元素值 | 鍵值對 | 鍵值對 |
python中列表和元組兩種資料結構屬於有序(這裡有序並不是指按照一定邏輯排序,而是指儲存按照下標索引可以找到)的序列,而其中元組是不可修改的,下面分別介紹四種資料結構的概念和它們之間的相互轉換
二、列表 list '[]'
初始化:a = [1,2,'str']
除了可以通過索引直接訪問元素,在python中可以使用分片操作來訪問一定範圍內的元素
#coding:utf-8 a = [0,1,2,3,4,5,6,7,8,9] print a[3:6] #按索引分片 print a[-3:-1]#從後面數,從-1開始 print a[-3] print a[-3:0]#只要左邊索引的元素值比右邊索引的元素值出現晚,結果就為空 print a[-3:] print a[:3] print a[:]#相當於複製原序列 print a[1:8:2]#第三位索引為步長 print a[8:1:2]#只要左邊索引的元素值比右邊索引的元素值出現晚,結果就為空 print a[1:8:-2]#只要左邊索引的元素值比右邊索引的元素值出現晚,結果就為空—這裡由於步長為負,是從後往前索引,1比8出現晚 print a[8:1:-2]
[3, 4, 5]
[7, 8]
7
[]
[7, 8, 9]
[0, 1, 2]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 5, 7]
[]
[]
[8, 6, 4, 2]
除了可以通過索引下標和分片兩種方式直接對列表元素操作之外,列表常用函式如下:
- list() 函式:把元組,字串等轉換為列 由於字串和元組等不可修改,有時候這函式很有用;eg:list('hello') 輸出: ['h','e','l','l','o']。 如果要把列表轉換為字串,常用join函式。' '.join(somelist) 以空格連線列表元素
- append() 函式
- count() 函式:統計某個元素在列表中出現的次數,eg:list.count(x) ,返回出現次數 print list.count(x)
- extend() 函式:可以用寫列表擴充套件原來的列表,eg:a.extend(b),沒有返回值 print a
- index() 函式:找到元素下標,eg:list.index(x),返回下標 print list.index(x) ,如果沒找到,會返回異常
- insert() 函式:將物件插入到列表,eg:list.insert(3,'four') 沒有返回值,print list
- pop() 函式:移除列表元素,預設最後一個,list.pop() 返回被移除的值 print list.pop()
- remove() 函式:移除列表中第一個匹配項,list.remove('be'),沒有返回值,print list
- reverse() 函式:將列表中元素反響存放,list.reverse() ,沒有返回值,print list
三、元組 tuple '()'
初始化 a = (1,2,'str')
元組的意義
既然有了列表,元組又不可變,那麼元組存在的意義是什麼?
- 元組可以在對映(和集合的成員)中當做鍵值對使用——而列表則不行
- 元組作為很多內建函式和方法的返回值存在,也就是說必須對元組進行處理
元組定義的tips
- 定義tuple時,必須確定元素值不可更改
- 如果tuple只有一個元素,需要加逗號 a = (1,),如果定義為b = (1) 就會產生歧義
四、字典 dict '{}'
字典是一種通過名字來引用值的資料結構—對映(mapping)。
字典是無序的,通過鍵值對儲存元素,通過鍵來訪問成員,成員可以重複
字典常用函式如下:
- len()函式:返回字典x中鍵值對的數量,len(x)
- clear()函式:清除字典中所有的項,類似於list.sort(),沒有返回值
- copy()函式:這裡是指淺複製,返回具有相同鍵值對的新字典 eg:y = x.copy()
- fromkeys()函式:使用給定的鍵,建立新的字典,值為None,返回新的字典。eg:{}.fromkeys(['name','age'])
- get()函式:訪問字典,一般用d[]訪問,如果字典不存在,會報錯,用d.get('name'),會返回None
- keys()函式:獲得鍵的列表,d.keys(),將鍵以列表形式返回
- values()函式:獲得值的列表,同上
- pop()函式:刪除鍵值對,d.pop(k),沒有返回值
- update()函式:更新成員,若成員不存在,相當於加入,沒有返回值
- items()函式:獲得由鍵值對組成的列表,返回列表,d.items()
#coding:utf-8
d = {1:'a',2:'b',3:'c',4:'d'}
print len(d)
c = d.copy()
print c
print {}.fromkeys(['str'])
print d.get(1)
print d.get(888)
print d.keys()
print d.values()
d.pop(1)
print d
print d.items()
4
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
{'str': None}
a
None
[1, 2, 3, 4]
['a', 'b', 'c', 'd']
{2: 'b', 3: 'c', 4: 'd'}
[(2, 'b'), (3, 'c'), (4, 'd')]
五、集合 set '{}'
集合是一個無序不重複元素集,python中的集合與其它
定義集合:set0 = {1,2,3,4}
集合常用函式如下:
- add()函式:新增新元素,沒有返回值,如果新增重複元素,不會報錯,不新增而已
- pop()函式:set集合無序,這裡會隨機刪除一個元素,返回值為刪除的元素
六、四種資料結構相互轉換
#coding:utf-8
list1 = [1,2,3,4]
list2 = ['c1','c2','c3','c4','s']
list3 = [[1,'a'],[2,'b']]
set0 = set(list1)
d0 = dict(zip(list1,list2))
d1 = dict(list3)
str = ' '.join(list2).strip() #strip函式是去除首尾的空格
print set0 #轉換為集合
print d0 #轉換為字典
print d1 #轉換為字典
print str #轉換為字串
print list(d0) #字典轉換為列表,這裡轉換的值為鍵元素
print tuple(d0) #字典轉換為元組,這裡轉換的值為鍵元素
set([1, 2, 3, 4])
{1: 'c1', 2: 'c2', 3: 'c3', 4: 'c4'}
{1: 'a', 2: 'b'}
c1 c2 c3 c4 s
[1, 2, 3, 4]
(1, 2, 3, 4)