一、字典——Python中的查询神器
1、字典(dict)的概念
特点:
① 符号为==大括号==(花括号) => {}
② 数据为==键值对==形式出现 => {key:value},key:键名,value:值,在同一个字典中,key必须是唯一(类似于索引下标)
③ 各个键值对之间用逗号隔开
在字典中,键名除了可以使用字符串的形式,还可以使用数值的形式来进行表示。
字典是Python中的查询神器
定义:
# 有数据字典 dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'} # 空字典 dict2 = {} dict3 = dict()
在Python代码中,字典中的key必须使用引号引起来
3、字典的增操作
基本语法:
字典名称[key] = value 注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。
注意:列表、字典为可变类型
4、字典的删操作
① del 字典名称[key]:删除指定元素
# 1、定义一个有数据的字典 person = {'name':'张飞', 'age':28, 'gender':'male'} # 2、删除字典中的元素(如gender) del person['gender'] # 3、打印字典 print(person)
② clear()方法:清空字典中的所有key
# 1、定义一个有数据的字典 person = {'name':'张飞', 'age':28, 'gender':'male'} # 2、使用clear()方法清空字典 person.clear() # 3、打印字典 print(person)
5、字典的改操作
基本语法:
字典名称[key] = value 注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。
6、字典的查操作
① 查询方法:使用具体的某个key查询数据,如果未找到,则直接报错。
字典序列[key]
② 字典的相关查询方法
get(key, 默认值):根据字典的key获取对应的value值,如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回None。
keys():以列表返回一个字典所有的键。
values():以列表返回字典中的所有值。
items():以列表返回可遍历的(键, 值) 元组数组。
二、集合——求交集、并集、差集
1、什么是集合
集合(set)是一个无序的不重复元素序列。
① 天生去重
② 无序
2、集合的定义
在Python中,我们可以使用一对花括号{}或者set()方法来定义集合,但是如果你定义的集合是一个空集合,则只能使用set()方法。
3、集合操作的相关方法(增删查)
☆ 集合的增操作
① add()方法:向集合中增加一个元素(单一)
students = set() students.add('张三') students.add('李四') print(students)
② update()方法:向集合中增加序列类型的数据(字符串、列表、元组、字典)
students = set() list1 = ['刘备', '关羽', '赵云'] students.update(list1) print(students)
students = set() students.add('刘德华') students.add('黎明') # 使用update新增元素 students.update('蔡徐坤') # students = {'刘德华', '黎明', '蔡', '徐', '坤'}
☆ 集合的删操作
① remove()方法:删除集合中的指定数据,如果数据不存在则报错。
② discard()方法:删除集合中的指定数据,如果数据不存在也不会报错。
③ pop()方法:随机删除集合中的某个数据,并返回这个数据。
执行原理:系统自动对集合中的数据进行排序,排序后,pop()方法自动删除第一个元素
# 1、定义一个集合 products = {'萝卜', '白菜', '水蜜桃', '奥利奥', '西红柿', '凤梨'} # 2、使用remove方法删除白菜这个元素 products.remove('白菜') print(products) # 3、使用discard方法删除未知元素 products.discard('玉米') print(products) # 4、使用pop方法随机删除某个元素 del_product = products.pop() print(del_product)
☆ 集合中的查操作
① in :判断某个元素是否在集合中,如果在,则返回True,否则返回False
② not in :判断某个元素不在集合中,如果不在,则返回True,否则返回False
③ 集合的遍历操作
for i in 集合: print(i)
4、集合中的交集、并集与差集特性
s1 = {'赵云', '关平', '张苞', '貂蝉'}
s2 = {'颜良', '文丑', '董卓', '貂蝉'}
在Python中,我们可以使用&
来求两个集合的交集:s1 & s2
在Python中,我们可以使用|
来求两个集合的并集:s1 | s2
在Python中,我们可以使用-
来求两个集合的差集:s1 - s2或者s2 - s1
三、数据序列中的公共方法
1、什么是公共方法
所谓的公共方法就是支持大部分数据序列。
2、常见公共方法1
1:+ 合并(字符串、列表、元组)
2:* 复制(字符串、列表、元组)
3:in与not in方法(字符串、列表、元组、字典、集合)
3、常见公共方法2
1:len() 获取字符串、列表、元组、字典、集合的长度:计算容器中元素个数
2:del方法,用于删除序列中指定的元素(根据索引下标):根据索引下标删除指定元素
3:求某个序列中元素的最大值和最小值:max()或者min()
4:enumerate(),把一个序列类型(列表、元组、字符串)的数据构造成key:value结构,然后结合for循环进行遍历
4、序列类型之间的相互转换
list()方法:把某个序列类型的数据转化为列表
# 1、定义元组类型的序列 tuple1 = (10, 20, 30) print(list(tuple1)) # 2、定义一个集合类型的序列 set1 = {'a', 'b', 'c', 'd'} print(list(set1)) # 3、定义一个字典 dict1 = {'name':'刘备', 'age':18, 'address':'蜀中'} print(list(dict1))
tuple()方法:把某个序列类型的数据转化为元组
# 定义一个列表类型的数据 list1 = ['a', 'b', 'c', 'd'] print(tuple(list1)) # 定义一个集合类型的数据 set1 = {10, 20, 30, 40} print(tuple(set1))
set()方法:将某个序列转换成集合(但是要注意两件事 => ① 集合可以快速完成列表去重 ② 集合不支持下标)
# 定义一个列表类型的数据 list1 = ['a', 'b', 'c', 'd', 'a'] print(set(list1)) # 定义一个元组类型的数据 tuple1 = (10, 20, 30, 40) print(set(tuple1))
四、列表集合字典推导式
1、什么是推导式
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列(一个有规律的列表或控制一个有规律列表)的结构体。 共有三种推导:列表推导式
、集合推导式
、字典推导式
。
[1, 2, 3] 推导式 [1, 4, 9]
2、为什么需要推导式
答:使用推导式可以简化我们的代码。
3、列表推导式
基本语法:
变量名 = [表达式 for 变量 in 列表] 变量名 = [表达式 for 变量 in 列表 if 条件] 变量名 = [表达式 for 变量 in 列表 for 变量 in 列表]
定义0-9之间的列表,列表推导式
list1 = [i for i in range(10)] print(list1)
执行原理:[i for i in range(10)]
列表推导式先运行表达式右边的内容: 当第一次遍历时:i = 0,其得到变量i的结果后,会放入最左侧的变量i中,这个时候列表中就是[0] 当第二次遍历时:i = 1,其得到变量i的结果后,会追加最左侧的变量i中,这个时候列表中就是[0, 1] ... 当最后一次遍历时:i = 9,其得到变量i的结果后,会追加最左侧的变量i中,这个时候列表中就是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4、列表推导式 + if条件判断
在使用列表推导式时候,我们除了可以使用for循环,其实我们还可以在其遍历的过程中,引入if条件判断。
变量 = [表达式 for 临时变量 in 序列 if 条件判断] 等价于 for 临时变量 in 序列: if 条件判断
案例:生成0-9之间的偶数(i%2 == 0)序列
list1 = [i for i in range(10) if i % 2 == 0] print(list1)
5、for循环嵌套列表推导式
for 临时变量 in range(n): for 临时变量 in range(n):
基本语法:
变量 = [表达式 for 临时变量 in 序列 for 临时变量 in 序列]
列表推导式:
list1 = [(i, j) for i in range(1, 3) for j in range(0, 3)] print(list1)
6、字典推导式
有如下两个列表,如何快速合并为一个字典?
list1 = ['name', 'age', 'gender'] list2 = ['Tom', 20, 'male'] person = {'name':'Tom', 'age':20, 'gender':'male'}
可以使用字典推导式
基本语法:
① 字典推导式列表推导式思想的延续,语法差不多,只不过产生的是字典而已。
② 字典推导式格式:
变量 = {key:value for key,value in 序列}
字典推导式作用:快速合并列表为字典或提取字典中目标数据。
7、集合推导式
集合推导式跟列表推导式非常相似,唯一区别在于用 { } 代替 [ ]。集合的最大特点就是去重
需求:创建一个集合,数据为下方列表的2次方。
list1 = [1, 1, 2] set1 = {1, 4}
推导式
list1 = [1, 1, 2] set1 = {i**2 for i in list1} print(set1)