1. 字符串、列表和元组的元素都是按下标顺序排列,可通过下 标直接访问,这样的数据类型统称为序列。 其中,字符串和元组中的元素不能修改,而列表中的元素可以修改。
集合
1. 与元组和列表类似,Set (集合)中同样可以包含多个不同类型的元素, 但集合中的各元素无序、 不允许有相同元素且元素必须是可哈希 (hashable)的对象。
注:可哈希对象是指拥有 __hash__(self) 内置函 数的对象。列表、集合和字典类型的数据不是可哈希对象,所以它们不能作为集合中的元素。元组、字符串和数值都是可哈希对象。
2. 创建集合
集合中的所有元素都写在一对大括号“{}”中,各元素之间用逗号分隔。
创建集合时,既可以使用{},也可以使用set函数。
set函数的语法格式如下:set([iterable]) ,其中,iterable是一个可选参数,表示一个可迭代对象。
例如:
a={10, 2.5, 'test', 3+4j, True, 5.3, 2.5}
print(a) #输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
b=set('hello')
print(b)
#输出“{'e', 'l', 'o', 'h'}”
#传入了一个字符串参数,执行set函数时会依次将每个字符取出来形成子串作为新建集合中的元素。
c=set([10, 2.5, 'test', 3+4j, True, 5.3, 2.5])
print(c)
# 输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
# 传入了列表作为参数,执行set函数时会依次将每个元素取出作为新建集合中的元素
d=set((10, 2.5, 'test', 3+4j, True, 5.3, 2.5))
print(d)
# 输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
# 传入了元组作为参数,执行set函数时会依次将每个元素取出作为新建集合中的元素
注:可迭代(iterable)对象是指可以一次返回它的一个元素,如前面学 习的字符串、列表、元组都是可迭代的数据类型。
注:
- 与字符串、列表、元组等序列类型不同,集合中的元素不能使用下 标方式访问。
- 集合主要用于做并、交、差等集合运算,以及基于集合进行元素的 快速检索。
- {}用于创建空字典,如果要创建一个空集合,则需要使用set()
例题:
下列选项中,执行时不会报错的语句是( )。
A.{['Python',True]}
B.{3.5,[1.2,True]}
C.{3.5,{1.2,True}}
D.{3.5,1.2,True}
正确答案:D
解析:集合中的元素必须是可哈希的。哈希是数据结构中的一种存储方式,其特点是检索效率很高。在Python中,可变类型的数据都不可哈希,不能作为集合的元素;不可变类型的数据都可哈希,可以作为集合的元素。内置类型中,数字(含布尔值)、字符串和元组是不可变类型,而列表、集合和字典是可变类型。A选项和B选项中,列表是可变类型,因此不能作为集合中的元素;C选项中,集合是可变类型,因此不能作为集合中的元素;D选项中,数字和布尔值都是不可变类型,因此执行时不会报错。
字典
1. Dictionary(字典) 是另一种无序的对象集合。
但与集合不同,字典是一种 映射类型,每一个元素是一 个键(key):值(value)对。
2. 在一个字典对象中,键必须是唯一的,即不同元素的键不能相同;
另外,键必须是可哈希数据,即键不能是列表、集合、 字典等类型;值可以是任意类型。
3. 对于不包含任何元素的字典,即{},称为空字典。
创建字典
既可以使用{},也可以使用dict函数。
1. 创建空字典
例如:
a={}
b=dict()
执行完毕后,a和b是两个不包含任何元素的空字典。
2. 如果在创建字典的同时,需要给出字典中的元素, 则可以使用下面的方法:
(1) {k1:v1,k2:v2,…,kn:vn}
#ki和vi(i=1,2,…,n)分别是每一个元素的键和值
a={'one':1, 'two':2, 'three':3}
(2)dict(**kwarg)
b=dict(one=1, two=2, three=3)
#**kwarg是一个或多个赋值表达式,两个赋值表达式之间 用逗号分隔
(3)dict(z)
#z是zip函数返回的结果
c=dict(zip(['one','two','three'], [1,2,3]))
(4)dict(ls)
d=dict([('one',1), ('two',2), ('three',3)])
#ls是元组的列表,每个元组包含两个元素,分别对应键和值
(5)dict(dictionary)
#dictionary是一个已有的字典
e=dict({'one':1, 'two':2, 'three':3})
zip函数
1. zip函数的参数是多个 可迭代的对象(列表 等),其功能是将不 同对象中对应的元素 分别打包成元组,然 后返回由这些元组组 成的列表。
在Python 3.x中为了减少内 存,zip函数返回的是一个 对象,可以通过list函数转换为列表 ,
如通过 “list(zip(['one','two','three'], [1,2,3]))” 可得到列表 “ [('one', 1), ('two', 2), ('three', 3)]”
访问字典元素
1. 与列表等序列对象不同,在访问字典中的元素时不能通过下标方式访问, 而是通过键访问
info={'name':'张三', 'age':19, 'score':{'python':95,'math':92}}
print(info['name'])
#输出“张三”
print(info['age'])
#输出“19”
print(info['score'])
#输出“{'python': 95, 'math': 92}”
print(info['score']['python'])
#输出“95”
print(info['score']['math'])
#输出“92”