1. 程式人生 > 其它 >python內建序列型別

python內建序列型別

目錄

引言

python的核心語言特色之一是對序列資料型別的支援。按照不同的分類標準可以將python中內建的序列型別分為以下幾類:

按照序列能否存放不同型別物件

容器序列

list、tuple、collections.deque等。
容器序列型別,同一個序列物件中可以存放不同型別的資料。

扁平序列

str、bytes、bytearray、memoryview、array.array。
一個序列物件只能容納一種型別。

區別

可以認為容器序列中存放的是任意型別物件的引用,扁平序列中存放的是值。扁平序列更加緊湊,但是隻能放字元、位元組、數值這種基礎型別。

按照序列能被被修改

可變序列

list,bytearray、array.array、collections.deque和memoryview。

不可變序列

tuple、str和byte。

  • 對於str,看上去很像可變的,因為可以進行各種字串拼接操作,但實際上不是。如下所示,
    a = "I am Kangkang"
    print(id(a))
    a = a + " pei!"
    print(id(a))

結果為:

140332076808176
140332076812664

根據返回結果來看,記憶體地址是改變了的。

  • 對於元組,大家都知道它不可變,但是如果元組中有元素是可變物件,那麼可以通過改變元組的元素來改變元組,如下例子。
  a = (1, 2, [1, 2])
#    a[0] = 100 # 錯誤,元組不能改變
  a[2][0] = 100
  print(a)

輸出為:

(1, 2, [100, 2])

可見,因為元組的元素a[2]是一個可變的list,因此可以通過改變a[2]而間接改變了元組。