集合(set)是python2.4引入的一种类型,集合常量用大括号表示,例如{1,2,3}。集合中的元素具有唯一、无序和不可改变特点,集合支持数学理论中的各种运算。
**集合对象支持求长度、判断包含、求差集、求并集、求交集、求对称差和比较邓运算,代码如下:
set1 = {1, 2, 'a', 'bc'}
print(len(set1)) # 求长度:计算集合中元素的个数 4
print('a' in set1) # 判断包含:判断集合是否包括数据 True
set2 = {1, 'a', 5}
print(set1 - set2) # 求差集:用属于set1但不属于set2的元素创建新集合 {2, 'bc'}
print(set1 | set2) # 求并集:用set1、set2两个集合中的所有元素创建新集合 {1, 2, 5, 'a', 'bc'}
print(set1 & set2) # 求交集:用同时属于set1和set2的元素创建新集合 {1, 'a'}
print(set1 ^ set2) # 求对称差:用属于set1但不属于set2以及属于set2但不属于set1的元素创建新集合 {2, 5, 'bc'}
print(set1 < set2) # 比较:判断子集和超集的关系,x是y的子集时返回True,否则返回False False
***集合对象元素的值不支持修改,但可以复制集合,或为集合添加和删除元素,代码如下:
x = {1, 2}
print(x.copy()) # 复制集合对象
x.add('abc') # 为集合添加一个元素
x.update({10, 20}) # 为集合添加多个元素
x.remove(10) # 从集合中删除指定元素,删除不存在元素时会报错
x.discard(15) # 移除元素
print(x.pop()) # 从集合中随机删除一个元素,并返回该元素 1
x.clear() # 删除集合中的全部元素 set()
列表常量用方括号表示,例如,[1,2,'abc'],也可以使用list()函数来创建,列表的主要特点如下:
- 列表可以包含任意类型的对象:数字、字符串、列表、元组或其他对象。
- 列表是一个有序序列,与字符串类似,可通过位置偏移量执行索引和分片操作。
- 列表是可变的。列表的长度可变,即可添加或删除列表成员。列表元素的值也可改变。
- 每个列表元素存储的是对象的引用,而不是对象本身,类似于C/C++的指针数组。
列表基本操作包括:创建列表、求长度、合并、重复、迭代、关系判断、索引和分片等。
# 创建列表
print([1, 2, 3, 4, ('a', 'b'), [12, 34]]) # [1, 2, 3, 4, ('a', 'b'), [12, 34]]
print(list('abcd')) # ['a', 'b', 'c', 'd']
print(list(range(-2, 3))) # [-2, -1, 0, 1, 2]
print(list((1, 2, 3))) # [1, 2, 3]
list1 = [item + 10 for item in range(5)]
print(list1) # [10, 11, 12, 13, 14]
# 求长度
print(len([1, 2, 3, 4, ('a', 'b'), [5, 6]])) # 6
# 合并
print([1, 2] + ['abc', 20])
# 重复
print([1, 2] * 5)
# 关系判断
print(2 in [1, 2, 3])
# 索引
list1 = [1, 2, 3, ['a', 'b', 'c']]
list1[2] = 100
print(list1[0], list1[2], list1[-1])
# 分片,与字符串类似,可通过分片来获取列表中的连续多个数据,也可以通过分片将连续多个数据替换成新的数据。
list1 = list(range(10))
print(list1[2:5]) # [2, 3, 4]
print(list1[2:]) # [2, 3, 4, 5, 6, 7, 8, 9]
print(list1[:5]) # [0, 1, 2, 3, 4]
print(list1[3:10:2]) # [3, 5, 7, 9]
print(list1[10:3:-2]) # [9, 7, 5]
list1[2:5] = 'abc'
print(list1) # [0, 1, 'a', 'b', 'c', 5, 6, 7, 8, 9]
list1[2:5] = [10, 20]
print(list1) # [0, 1, 10, 20, 5, 6, 7, 8, 9]
元组可以看作是不可变的列表,它的使用与字符串类似。元组常量用圆括号表示,例如:(1,2)、('a','b','c'),也可以使用tuple()方法来创建元组对象。元组的主要特点如下:
- 元组可包含任意类型的对象。
- 元组是有序的,元组中的对象可通过位置进行索引和分片。
- 元组的大小不能改变,即不能为元组添加对象,也不能删除元组中的对象。
- 元组中存储的是对象的引用,而不是对象本身。
元组的基本操作包括:创建元组、求长度、合并、重复、迭代、关系判断、索引和分片等。
# 创建元组
print((2,)) # 包含一个对象的元组,不能缺少逗号 (2,)
print(tuple('abcde')) # 参数为可迭代对象 ('a', 'b', 'c', 'd', 'e')
print(tuple(item * 2 for item in range(5))) # 使用解析结构创建元组 (0, 2, 4, 6, 8)
# 求长度
print(len((1, 2, 3, 4, 5))) # 5
# 合并
t1 = (1, 2) + ('ab', 'cd') + (2.45,) # (1, 2, 'ab', 'cd', 2.45)
print(t1)
# 重复
print((1, 2) * 3) # (1, 2, 1, 2, 1, 2)
# 关系判断
print(2 in t1) # True
# 索引和分片
t2 = tuple(range(10)) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
print(t2[1]) # 1
print(t2[-1]) # 9
print(t2[2:5]) # (2, 3, 4)
print(t2[2:]) # (2, 3, 4, 5, 6, 7, 8, 9)
print(t2[:5]) # (0, 1, 2, 3, 4)
print(t2[1:7:2]) # (1, 3, 5)
print(t2[7:1:-2]) # (7, 5, 3)
# 统计指定值出现的次数,如果不包含指定值时,返回0
t3 = (1, 2) * 4
print(t3.count(1)) # 4
# 查找指定范围内元素所在的索引
print(t3.index(2)) # 1
print(t3.index(2, )) # 1
print(t3.index(2, 2, 7)) # 3
字典是一种无序的映射集合,包含一系列的键:值对。字典常量用大括号表示,例如,{'name':'John','age':25,'sex':'male'},也可以使用dict()函数来创建。其中,字符串name、age和sex为键,字符串John和sex以及数字25为值。字典的主要特点如下:
- 字典的键名称通常采用字符串,也可以用数字、元组等不可变的类型。
- 字典的值可以是任意类型。
- 字典也可称为关联数组或散列表,它通过键映射到值。字典是无序的,它通过键来访问映射的值,而不是通过位置来索引。
- 字典属于可变映射,可修改键映射的值。
- 字典长度可变,可为字典添加或删除键:值对。
- 字典可以任意嵌套,即键映射的值可以是一个字典。
- 字典存储的是对象的引用,而不是对象本身。
字典的基本操作包括创建字典、求长度、关系判断和索引等。
# 创建字典
dict1 = {'name': 'John', 'age': 25, 'sex': 'male'} # 字典常量
dict2 = {'book': {'Python编程': 100, 'C++入门': 99}} # 嵌套字典
dict3 = {1: 'onw', 2: 'two'} # 数字作为键
dict4 = {(1, 3, 5): 10, (2, 4, 6): 50} # 元组作为键
dict5 = dict(name='Tom', age=25) # 使用赋值格式的“键:值”对创建字典 {'name': 'Tom', 'age': 25}
dict6 = dict([('name', 'Tom'), ('age', 25)]) # 使用包含“键:值”对元组的列表创建字典 {'name': 'Tom', 'age': 25}
dict7 = dict.fromkeys(['name', 'age']) # 创建无映射值的字典,默认值为None {'name': None, 'age': None}
dict8 = dict.fromkeys(['name', 'age'], 0) # 创建值相同的字典 {'name': 0, 'age': 0}
dict9 = dict.fromkeys('abc') # 使用字符串创建无映射值的字典 {'a': None, 'b': None, 'c': None}
dict10 = dict.fromkeys('abc', 10) # 使用字符串和映射值创建字典 {'a': 10, 'b': 10, 'c': 10}
dict11 = dict.fromkeys('abc', (1, 2, 3)) # {'a': (1, 2, 3), 'b': (1, 2, 3), 'c': (1, 2, 3)}
# 求长度
print(len({'name': 'John', 'age': 25, 'sex': 'male'})) # 返回字典长度,即“键:值”对的个数
# 关系判断 - 判断字典是否包含某个键
print('name' in {'name': 'John', 'age': 25, 'sex': 'male'}, # True
'date' in {'name': 'John', 'age': 25, 'sex': 'male'}) # False
# 索引
dict13 = {'book': {'Python编程': 100, 'C++入门': 99}, 'publish': '人民邮电出版社'}
print(dict13['book']) # {'Python编程': 100, 'C++入门': 99}
print(dict13['book']['Python编程']) # 100
dict13['publish'] = '清华大学出版社' # 通过索引修改映射值
dict13['phone'] = 12345678900 # 为不存在的键赋值,为字典添加“键:值”对
del dict13['book']['C++入门'] # 删除“键:值”对



