1. 程式人生 > 其它 >PYTHON 資料結構 - 元組

PYTHON 資料結構 - 元組

1.1 資料結構

一般常用的有陣列(Array),集合(Set),列表(List),佇列(Queue),連結串列(Linkedlist),樹(Tree),堆(Heap),棧(Stack),字典(Dictionary)

Python中資料結構主要有序列,集合,字典。

1.2 序列

序列是一種可迭代的,元素有順序,可以重複出現的資料結構,序列可以通過索引訪問;序列包括列表,字串,位元組串,元組等。

對於索引,切片與字串筆記中相同,不再記錄。

1.2.1 通用函式

  • len(序列)長度(即元素的個數)

    >>> a =(1,2,3,4,5)
    >>> len(a)
    5
    
  • max(序列)最大值

    元素如整數,字串按編碼進行求值

    >>> a = (1,2,3,4,5)
    >>> max(a)
    5
    
  • min(序列) 最小值

    元素如整數,字串按編碼進行求值

    >>> a = (1,2,3,4,5)
    >>> min(a)
    1
    

1.3 元組

元組類似於陣列,元組本身一旦定義是不可變的(即不能新增,刪除其中的元素),元組裡的元素型別可以是不同的(與陣列有區別)。

資料型別:tuple

優點:

  • 可以更安全地保護資料
  • 增加程式執行速度

1.3.1 建立元組

  • 通過()建立多元素元組
# a = (元素1,元素2, ...)

>>> a = ('張三','男',100,100,90)
>>> print(a)
('張三', '男', 100, 100, 90)

  • 只有一個元素的建立方法
>>> a = ('hello')
>>> a
'hello'  # 發現結果不是元組,是一個字串,()相當於運算優先順序的作用了。

>>> a = ('hello',)  # 加一個逗號
>>> a
('hello',)
  • 用tuple函式建立
# tuple(序列)
>>> tuple(a)
('h', 'e', 'l', 'l', 'o')
>>>
>>> a = [1,2,3,4]
>>> tuple(a)
(1, 2, 3, 4)
  • 建立空元組
>>> a = ()
>>> b = tuple()
>>> a,b
((), ())

1.3.2 訪問元組

可以通過索引的方式訪問,也可以通過切片的方式訪問

>>> a = (1,2,3,4)
>>> a[0]
1
>>> a[1:3]
(2, 3)

1.3.3 元組解包

把元組的元素值,賦值給變數。

>>> num = (1,2,3)
>>> a,b,c = num  # 把1,2,3 賦值給a,b,c (注意:元素個數和變數個數對應)
>>> print(a,b,c)
1 2 3

>>> num = (1,2,3,4,5)
>>> a,*b,c = num  # 如果個數不對應,可以用*var接收部分資料
>>> print(a,b,c)
1 [2, 3, 4] 5


>>> num=(1,2,3,4)
>>> a,_,b,_ = num  # 對於不需要的元素,可以用_接收,約定不取這個元素(本質上賦值給_了)
>>> print(a,b,_)
1 3 4

1.3.4 遍歷元組

# 用for的一般遍歷
# 迴圈一次,取出下一個
num = (1, 2, 3, 4, 5)
for item in num:
    print(item) # 依次列印1,2,3,4,5


# 帶索引的遍歷
num = (1, 2, 3, 4, 5)
for n, item in enumerate(num):  # n, item就是解包
    print(n,item)
    

1.3.5 刪除元組

元組本身是不可變的,不支援修改,但可以刪除整個元組。

>>> num = (1,2,3)
>>> del num
>>> num

1.3.6 元組的 +, * 運算

元組的+運算是合併兩個元組,建立一個新元組。

>>> a = (1,2,3)
>>> b = (4,5,6)
>>> c = a + b
>>> c
(1, 2, 3, 4, 5, 6)

元組的*運算是重複元組,建立一個新元組。

>>> a = (1,2)
>>> a * 3
(1, 2, 1, 2, 1, 2)

1.3.7 用zip打包成元組

zip把多個序列,按列打包成元組。想像成一個二維表格,按列組成元組的元素。

a = [1,2,3]
b = [4,5,6]
c = [7,8,9]

d = zip(a,b,c)
print(tuple(d)) # ((1, 4, 7), (2, 5, 8), (3, 6, 9))