概述:是一种无序且不重复的数据结构,由一组唯一的元素组成,可以进行交集、并集、差集等常见的集合操作,创建集合使⽤“ { } ”或 “set()”,元素之间用“,”隔开。
PS:集合 set 元素的数据类型可以是除了列表、集合和字典之外的任何数据类型(可hash,不可变以保证唯一性)。
方法 |
功能描述 |
set.add( E ) |
如果元素 E 不存在,则将元素 E 添加入集合list |
set.update( Es ) |
Es 可迭代,将 Es 内元素迭代展开,逐个加入 list 并去重 |
set.remove( E ) |
删除集合 list 中的指定元素 E,如果数据不不存在则报错 |
set.discard( E ) |
删除集合 list 中的指定元素 E,如果元素不存在也不报错 |
set.pop( ) |
随机删除集合中的某个数据,并将这个数据返回 |
E in / not in set |
判断数据 E 是否存在于集合中 |
len(set) |
返回集合 set 的长度,即元素的个数 |
set.clear( ) |
清空集合中的所有元素 |
demo_set1 = {1, 2, 3, '4', '5', '6', (7, 8), '9', '0'}
print(type(demo_set1)) # 输出:
demo_set2 = set()
print(demo_set2) # 输出:set()
demo_set3 = set([1, 2, 5, 8, 3, 1, 6, 2, 3, 6, 9, 0]) # 列表转集合,自动去重
print(demo_set3) # 输出:{0, 1, 2, 3, 5, 6, 8, 9}
demo_set2.add('abc')
print(demo_set2) # 输出:{'abc'}
demo_set2.update(demo_set3)
print(demo_set2) # 输出:{0, 1, 2, 3, 5, 6, 8, 9, 'abc'}
demo_set2.remove(0)
print(demo_set2) # 输出:{1, 2, 3, 5, 6, 8, 9, 'abc'}
print(demo_set2.pop(), demo_set2) # 输出随机
demo_set2.clear()
函数方法 |
符号 |
功能描述 |
one_set.union(other_set) |
| |
返回两个集合元素的并集(去重) |
one_set.intersection(other_set) |
& |
获取两个集合元素的交集 |
one_set.difference(other_set) |
- |
获取 one_set 中有而 other_set 中没有的元素集合 |
one_set.symmetric_difference(other_set) |
^ |
两个集合中仅出现在其中一个集合中的元素的集合 |
one_set = {'a','b','c','d','e','f','g'}
other_set = {'e','f','g','h','i','j','k'}
union_set1 = one_set.union(other_set)
print(union_set1) # {'a','b','c','d','e','f','g','h','i','j','k'}
print(other_set | one_set) # {'a','b','c','d','e','f','g','h','i','j','k'}
union_set1 = one_set.intersection(other_set)
print(union_set1) # {'e', 'f', 'g'}
print(one_set & other_set) # {'e', 'f', 'g'}
union_set1 = one_set.difference(other_set)
print(union_set1) # {'a','b','c','d'}
print(one_set - other_set) # {'a','b','c','d'}
union_set1 = one_set.symmetric_difference(other_set)
print(union_set1) # {'a','b','c','d','h','i','j','k'}
print(one_set ^ other_set) # {'a','b','c','d','h','i','j','k'}
PS:每次输出集合结果的内容一致,但是集合的排序可能不同。
概述:是一种无序可变的数据结构,用于存储键-值对(Key-Value Pairs)。字典中的键具有唯一性,不允许重复,键必须是不可变的对象,值可以是任意对象。
PS:适用于关联性数据存储,如个人姓名、年龄、身高、体重等信息,并通过 key 提供了快速的查找和访问能力。
添加/更新:使用【 dict[key] = value】语法将键值对添加到字典中,如果键已存在则更新对应的 value 值。
value获取:使用【 dict[key] 】语法根据键获取对应的值,如果键不存在则引发KeyError异常。
PS:可以使用【 dict.get(key, default) 】方法来获取值,如果键不存在则返回指定的 default 默认值。
k-v对删除:使用【 del dict[key] 】语句删除指定的键值对,如果键不存在则引发KeyError异常(可以配合【 key in dict 】语法先检查再删除)。
man_dict = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(man_dict['name']) # 输出 Tom
man_dict['age'] = 23
print(man_dict) # 输出 {'name': 'Tom', 'age': 23, 'gender': '男'}
man_dict['height'] = 179
print(man_dict) # 输出 {'name': 'Tom', 'age': 23, 'gender': '男', 'height': 179}
print(man_dict.get('weight', '体重属性不存在')) # 输出:体重属性不存在
del man_dict['other'] # KeyError: 'weight',停止执行
if 'weight' in man_dict: # 删除 K-V 改进版
del man_dict['weight']
else:
print('体重属性不存在')
man_dict['weight'] # KeyError: 'weight',停止执行
del man_dict # 从内存中删除变量
常用方法 |
功能描述 |
dict.keys( ) |
获取一个包含字典所有键的视图 |
dict.values( ) |
获取一个包含字典所有值的视图 |
dict.items( ) |
获取一个包含字典所有键值对的视图 |
dict.copy( ) |
对字典 dict 进行复制 |
dict.update( other_dict ) |
将另一字典或键值对的添加到当前字典中,如 key 存在则更新 value 值 |
dict.pop(key, default) |
若 key 存在,移除并返回对应 value 值,如不存在返回 default 默认值 |
dict.clear( ) |
清空字典内所有元素(是一个动作,无返回值) |
PS:dict_values、dict_keys 和 dict_items 都是字典视图(view)对象的不同类型,这些视图对象类似于列表(List)或集合(Set),但它们并不是普通的列表或集合。
woman_dict = {'name': 'Nancy', 'age': 22, 'gender': '女'}
other_dict = {'name': 'Nancy', 'age': 23, 'weight': 52, 'height': '169'}
print(woman_dict.keys()) # dict_keys(['name', 'age', 'gender'])
print(woman_dict.values()) # dict_values(['Nancy', 22, '女'])
print(woman_dict.items()) # dict_items([('name', 'Nancy'), ('age', 22), ('gender', '女')])
woman_dict.update({'age': 20})
print(woman_dict) # {'name': 'Nancy', 'age': 20, 'gender': '女'}
woman_dict.update(other_dict)
print(woman_dict) # {'name': 'Nancy', 'age': 23, 'gender': '女', 'weight': 52, 'height': '169'}
print(woman_dict.pop('age','age不存在')) # Nancy
print(woman_dict.pop('age','age不存在')) # 不存在
print(woman_dict.copy()) # {'name': 'Nancy', 'gender': '女', 'weight': 52, 'height': '169'}
print(woman_dict.clear()) # None
print(woman_dict) # {}
概述:Python 中字符串、列表、元组、字典等可以统称为容器,容器主要的公共操作有遍历、求长度、求最值等用法。
概述:Python 中主要使用 for 循环 进行容器的遍历,使用对象是可迭代的容器,同时可以搭配 enumerate( )函数, zip( ) 函数、列表推导等共同使用。
语法:for item in items:
my_string = "Hello, World!"
for char in my_string:
print(char, end=', ') # 最后结果:H, e, l, l, o, ,, , W, o, r, l, d, !,
print()
my_tuple = (1, 2, 3, 4, 5)
for item in my_tuple:
print(item, end=', ') # 最后结果:1, 2, 3, 4, 5,
print()
my_list = ['apple', 'banana', 'cherry']
for item in my_list:
print(item, end=', ') # 最后结果:apple, banana, cherry,
print()
my_set = {1, 2, 3, 4, 5}
for item in my_set:
print(item, end=', ') # 最后结果:1, 2, 3, 4, 5,
print()
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
for key, value in my_dict.items():
print(key, value, end=', ') # 最后结果:name Alice, age 25, city New York,
print()
for key in my_dict.keys():
print(key, end=', ') # 最后结果:name, age, city,
print()
for value in my_dict.values():
print(value, end=', ') # 最后结果:Alice, 25, New York,
print()
zip( ) :格式为【 zip(var1, var2 ...... varx) 】,函数可以将多个容器的元素一一配对,返回一个新的可迭代对象。当容器的长度不同时,只会迭代到最短的容器长度。
enumerate( ):格式为【 enumerate(iterable, start=0) 】,⽤于将⼀个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,返回值是由元素索引下标和元素组成的二元组(index, value),索引起始值可以自定义,默认从0开始。
range( ):格式为【 range(start, stop, size_step) 】,函数有三个参数,起始值(默认为0),终止值,步长(默认为1)。它返回一个表示整数序列的可迭代对象,包含从 start 到 stop 之间的整数,但不包括stop本身。
""" for 搭配推导式 """
demo = [1, 2, 3, 4, 5]
squared_demo = {x ** 2 for x in demo}
print(squared_demo) # {1, 4, 9, 16, 25}
# demo、squared_demo 可以是元组、列表、集合等类型
""" for 搭配 zip() 函数 """
names = ['Alice', 'Bob', 'Charlie', 'Jone', 'Nancy']
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(name, age, end=', ') # 最后结果:Alice 25, Bob 30, Charlie 35,
print()
""" for 搭配 enumerate() 函数 """
my_list = ['apple', 'banana', 'cherry']
for index, value in enumerate(my_list):
print(index, value, end=', ') # 最后结果:0 apple, 1 banana, 2 cherry,
print()
for index, value in enumerate(my_list,start=10):
print(index, value, end=', ') # 最后结果:10 apple, 11 banana, 12 cherry,
""" for 搭配 range() 函数 """
for i in range(2, 9, 2):
print(i) # 输出 2, 4, 6, 8
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers) # 输出 [0, 2, 4, 6, 8]
公共函数 |
功能描述 |
len( var ) |
统计并返回容器中元素的个数 |
max( var ) / min( var ) |
返回容器中的最大值/最小值 |
sum( var ) |
返回容器中所有元素的和 |
sorted( var ) |
返回一个新的已排序的列表list |
reversed( var ) |
反转顺序之后返回一个迭代器对象 |
any( var ) |
判断是否存在非零或True元素 |
all( var ) |
判断元素是否全部为非零或True元素 |
PS:1、sum 函数仅适用于数字类型的容器;
2、reversed 函数仅适用于序列对象;
3、以上公共操作都具有返回值。
my_dict = {'a': 1, 'b': 2, 'c': 3}
print(len(my_dict)) # 输出 3,字典的长度为键值对的数量
print(max(my_dict)) # 输出 'c',字典中的键按照字母顺序比较
demo_list = [0, 3, 1, 2, 7, 4, 5, 9]
print(len(demo_list)) # 输出 8
print(sum(demo_list)) # 输出 31
print(max(demo_list)) # 输出 9
print(sorted(demo_list)) # 输出 [0, 1, 2, 3, 4, 5, 7, 9]
print(list(reversed(demo_list))) # 输出 [9, 5, 4, 7, 2, 1, 3, 0]
print(any(demo_list)) # 输出 True,因为集合中存在非零元素
print(all(demo_list)) # 输出 False,因为存在元素0
ch_list = ['张三', '李四', '王五', '赵六', '孙七', '周八']
print(max(ch_list)) # 输出 赵六