1. 程式人生 > >Python中的列表,元組,字典以及集合的概念

Python中的列表,元組,字典以及集合的概念

一、列表,元組,字典以及集合的對比圖表

列表,元組,字典以及集合的對比圖表
列表 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() 函式
    :在列表末尾追加新物件,eg:list.append(x),沒有返回值 print list
  • 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)