python内置序列类型
引言
python的核心语言特色之一是对序列数据类型的支持,只要实现了__getitem__和__len__,就可以认为是一种序列类型。按照不同的分类标准可以将python中内置的序列类型分为以下几类。
按照序列能否存放不同类型对象
容器序列
list、tuple、collections.deque等。
容器序列类型,同一个序列对象中可以存放不同类型的数据。
扁平序列
str、bytes、bytearray、memoryview、array.array。
一个序列对象只能容纳一种类型。
区别
可以认为容器序列中存放的是任意类型对象的引用,扁平序列中存放的是值。扁平序列更加紧凑,但是只能放字符、字节、数值这种基础类型。
按照序列能被被修改
可变序列
list,bytearray、array.array、collections.deque和memoryview。
不可变序列
tuple、str和byte。
-
对于str,看上去很像可变的,因为可以进行各种字符串拼接操作,但实际上不是。
-
对于元组,大家都知道它不可变,但是如果元组中有元素是可变对象,那么可以通过改变元组的元素来改变元组,如下例子。
a = (1, 2, [1, 2])
# a[0] = 100 # 错误,元组不能改变
a[2][0] = 100
print(a)
输出为:
(1, 2, [100, 2])
可见,因为元组的元素a[2]是一个可变的list,因此可以通过改变a[2]而间接改变了元组。
浙公网安备 33010602011771号