python內建序列型別
阿新 • • 發佈:2022-03-10
目錄
引言
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]而間接改變了元組。