Python复合数据类型
数值类型、布尔类型数据不可再分解为其他类型, 而列表、元组、字典和集合类型的数据包含多个 相互关联的数据元素,所以称它们为复合数据类 型。
字符串其实也是一种复合数据,其元素是单个字 符。
列表、元组和字符串是有顺序的数据元素的集合 体,称为序列(sequence)。
序列具有顺序存取的特征,可以通过各数据元素 在序列中的位置编号(索引)来访问数据元素。
字典和集合属于无顺序的数据集合体,数据元素 没有特定的排列顺序,因此不能像序列那样通过 位置编号来访问数据元素。
1.列表
列表(list)是Python 中使用较多的复合数据类型, 可以完成大多数复合数据结构的操作。 列表是写在中括号之间、用逗号分隔的元素序列, 元素的类型可以不相同,可以是数字、单个字符、 字符串甚至可以包含列表(所谓嵌套)。
例:
>>> m=['brenden',45.3,911,'john',32] >>> print(m) #输出完整列表
['brenden', 45.3, 911, 'john', 32]
>>> print(m[0]) #输出列表的第1 个元素
brenden
与Python 字符串不同的是,列表中的元素是可以改变的。
例:
>>> a=[1,2,3,4,5,6]
>>> a[0]=9
>>> a
[9, 2, 3, 4, 5, 6]
2.元组
元组(tuple)是写在小括号之间、用逗号隔开的元素序列。
元组中的元素类型也可以不相同。
元组与列表类似,不同之处在于元组的元素不能修改,相当于只读列表。
例:
>>> m=('brenden',45.3,911,'john',32)
>>> print(m) #输出完整元组
('brenden', 45.3, 911, 'john', 32)
>>> print(m[0]) #输出元组的第1 个元素
brenden
注意:
空的圆括号表示空元组。
当元组只有一个元素时,必须以逗号结尾。
例:
>>> () #空元组
()
>>> (9,) #含有一个元素的元组
(9,) >>> (9) #整数9
9
任何一组以逗号分隔的对象,当省略标识序列的括号时,默认为元组。
例:
>>> 2,3,4
(2, 3, 4)
>>> s=2,3,4
>>> s
(2, 3, 4)
元组与字符串类似,元素不能二次赋值。
可以把字符串看成一种特殊的元组。
以下给元组赋值是无效的,因为元组是不允许更新的,而列表允许更新。
>>> tup=(1,2,3,4,5,6)
>>> list=[1,2,3,4,5,6]
>>> tup[2]=1000 #在元组中是非法应用
>>> list[2]=1000 #在列表中是合法应用
元组和列表的区别:
列表元素用中括号[]括起来,且元素的个数及元 素的值可以改变。
元组元素用小括号()括起来,且不可以更改。
元组可以看成只读的列表。
3.字典
字典(dictionary)是写在大括号之间、用逗号分隔的元素集合,其元素由关键字(key,也称为键) 和关键字对应的值(value)组成,通过关键字来 存取的字典中的元素。
列表和元组是有序的对象结合,字典是无序的对象集合。
字典是一种映射类型(mapping type),它是一 个无序的“关键字:值”对集合。
关键字必须使用不可变类型,也就是说列表和包 含可变类型的元组不能做索引关键字。
在同一个字典中,关键字还必须互不相同。
例:
>>> dict={'name':'brenden','code':410012,'dept':'sales'}
>>> print(dict) #输出完整的字典
{'name': 'brenden', 'dept': 'sales', 'code': 410012}
>>> print(dict['code']) #输出关键字为“code”的值
410012
>>> dict['payment']=4500 #在字典中添加一个“关键字:值”对
>>> print(dict) #输出完整的字典
{'name': 'brenden', 'dept': 'sales', 'code': 410012, 'payment': 4500}
4.集合
集合(set)是一个无序且包含不重复元素的数据 类型。
基本功能是进行成员关系测试和消除重复元素。
可以使用大括号或者set()函数创建集合类型。
注意:创建一个空集合必须用set()而不是{},因为 {}是用来创建一个空字典。
例:
>>> student={'Tom','Jim','Mary','Tom','Jack','Rose'}
>>> print(student) #重复的元素被自动去掉
{'Jim', 'Tom', 'Jack', 'Rose', 'Mary'}
>>> s={}
>>> type(s)
<class 'dict'>
>>> s=set()
>>> type(s)
<class 'set'>