iT邦幫忙

0

[Python]B05─資料結構(data structure)

Hi! 大家好,我是Eric,這次教大家Python的資料結構(data structure)!
/images/emoticon/emoticon78.gif


■ 資料結構(data structure)

  • Python具有下列4種資料結構:
    • 列表(List)。有序集合
    • 元組(Tuple)。不可變的有序集合
    • 字典(Dict)。無序的鍵值對映
    • 集合(Set)。無序且唯一

■ 列表(List)

L = [1,5,6]
len(L)               #列表長度
L.append(10)         #在列表尾端新增元素
L + [13,15]          #與其它列表串接
sort(L)              #排序
L = [5,"abc",3.14,[0,4,6]]    可包含任何型別的物件,具有高靈活性
  • 列表索引與切片
L = [2,3,5,7,11]
L[0]         #索引,取得單一元素
L[-1]        #可由尾端向前訪問,-1代表最後一個元素
L[-2]
L[0:3]       #切片,0為起點(包含),3為終點(不包含)。可一次取得多個元素,等同L[:3]
L[-3:]       #若省略後面的索引值,預設為列表的長度
L[::2]       #可用第3個索引值表示為步長,取得間隔為2的元素們,等同L[0:len(L):2]
L[::-1]      #可將列表反轉
L[0] = 100   #可改變列表中的元素

■ 元組(Tuple)

  • 各方面與列表很像,但一旦建立後是不可變的:
t = (1,2,3)
t = 1,2,3         #可不用括號表示
len(t)
t[0]
t[0] = 4          #將會出錯  
t.append(10)      #將會出錯
  • tuple經常用於Python中,最常見的是函式返回多個值:
x = 0.125
x.as_integer_ratio()    #as_integer_ratio()可回傳浮點數對應的分子與分母,而回傳值就是tuple
numerator, denominator = x.as_integer_ratio()    #可以分別獨立賦值
print(numerator / denominator)
  • tuple也跟列表一樣,具有索引及切片的功能
x = 0.125
x.as_integer_ratio()    #as_integer_ratio()可回傳浮點數對應的分子與分母,而回傳值就是tuple
numerator, denominator = x.as_integer_ratio()    #可以分別獨立賦值
print(numerator / denominator)

■ 字典(Dict)

  • 字典為非常靈活的鍵值對,不具順序性,形式為(key:value):
number = {"one":1, "two":2, "three":3}
number["two"]             #索引訪問字典中的元素,但索引值是有效的字典索引鍵,非數字
number["nine"] = 90       #可用索引來新增元素

■ 集合(Set)

  • 可使用數學集合相關的操作,如下:
prime = {2,3,5,7}
odds = {1,3,5,7,9}
      
primes | odds     #聯集,等同primes.union(odds)
primes & odds     #交集,等同primes.intersection(odds)
primes - odds     #差分,等同primes.difference(odds)
primes ^ odds     #對稱差分,只出現在一個集合的元素,等同primes.symmetric_difference(odds)
  • Python還有其他許多數據結構,可參考內建的collection套件

■ Refer to《Python 旋風之旅,[正體中文]Will保哥》的第7章


尚未有邦友留言

立即登入留言