元组的声明
变量名称=(元素1,元素2,元素3,元素4…….) (元素类型可以不同)
- eg:
- tuple_01 = ("hello", 1, 2,-20,[11,22,33])
- print(type(tuple_01))
-
- 结果:
- <class 'tuple'>
定义空元组
变量名称=()
变量名称=tuple()
((),())
下标索引取出元素====与列表相同
typle() 强制转换
元组与列表的区别:
- 符号:元组( ) 列表[ ]
- 元组的元素一旦定义,不可更改 而列表可以 (最大的区别)
- eg:
- tuple_01[1] = "l love you"
-
-
- 结果:
- Traceback (most recent call last):
- File "D:\pycharm\main.py", line 5, in
- tuple_01[1] = "l love you"
- TypeError: 'tuple' object does not support item assignment
-
- 因为元组的元素一旦定义,不可更改
但是:元组里列表元素里的值可以改变
- eg:
- tuple_01 = ("hello", 1, 2,20,[11,22,33])
- print(tuple_01)
- tuple_01[-1][0] = "l love you"
- print(tuple_01)
-
-
- 结果:
- ('hello', 1, 2, 20, [11, 22, 33])
- ('hello', 1, 2, 20, ['l love you', 22, 33])
元组的切片和字符串、列表的切片是一样的
- eg:
- tuple_01 = ("hello", 1, 2,-20,[11,22,33])
- print(tuple_01[1:4])
-
- 结果:
- (1, 2, 20)
推荐网站:python在线演示 Python compiler - visualize, debug, get AI help from ChatGPT
这个可以让你清晰的观看到python的运行过程 (这是python官方网站,用图清晰的表示代码的运行顺序)
len () 求元组的长度(与字符串、列表用法相同)
- eg:
- tuple_01 = ("hello", 1, 2,20,[11,22,33])
- len(tuple_01)
- print(len(tuple_01))
-
- 结果:
- 5
max (列表/字符串/元组名) 求最大 值 (若是字符、字母按照ASCII码表进行比较)
min (列表/字符串/元组名) 求最小值(若是字符、字母按照ASCII码表进行比较)
元组的特殊写法:t = 1, 2, 3 也是元组
- eg:
- t = (1, 2, 3)
- print(type(t))
- t1 = 1, 2, 3
- print(type(t1))
-
- 结果:
- <class 'tuple'>
- <class 'tuple'>
单个数字 t = (2) 这是整型,因为解释器认为 () 是运算符
解决方法 t = (2, ) 这即是元组
结论:只有一个元素时,元组后面必须带 ,
- eg:
- t1 = (2)
- print(type(t1))
- t2 = (2, )
- print(type(t2))
-
- 结果:
- <class 'int'>
- <class 'tuple'>
元组的乘法
- eg:
- >>> t=(22,)
- >>> t*10
- (22, 22, 22, 22, 22, 22, 22, 22, 22, 22)
- >>>
元组.index(元素) 查询某元素下标
- eg:
- >>> t=(75,23,22,12,1)
- >>> t
- (75, 23, 22, 12, 1)
- >>> t.index(22)
- 2 #索引下标为2时为22
- >>> t.index(222) #没有时报错
- Traceback (most recent call last):
- File "
" , line 1, in - ValueError: tuple.index(x): x not in tuple
- >>>
元组.count(元素) 统计某元素在列表中的数量
- eg:
- >>> t1=(1,2,3,4,2,2,2,3)
- >>> t1
- (1, 2, 3, 4, 2, 2, 2, 3)
- >>> t1.count(2)
- 4
- >>>
因为元组不能更改,所以他的方法只有两种
并且看过我Day 03学习笔记的应该了解,这两种方法在列表里也有
不支持元素重复,内部元素无序 (可用于去重)
变量名称={元素,元素,元素..........}
变量名称=set() (创建空集合的唯一办法)注意:{ 元素 } { }内至少有一个元素,此时才是集合,无元素为空集合
- set_01={'gouxin','zhangsan','gouxin','zhangsan','gouxin','zhangsan'}
- print(set_01)

- eg:
- set_01 = set("12345") #名称尽量不要起set,这是关键字,set()函数,
- print(set_01) #大部分解释器会报错
- set_02 = set("123451111111122223333444")
- print(set_02)
- set_03 = set([1,2,3,4]) #可能解释器会爆红,这是不推荐,但可以
- print(set_03)
- set_04 = set([1,2,3,4,1,1,1,1,2,2,2])
- print(set_04)
- set_05 = set((10,20,30,1,1,1))
- print(set_05)
-
- d = {
- "姓名":"zs",
- "年龄":18
- } #简单的字典形式,后面会详细讲
- set_06 = set(d) #转换为集合
- print(set_06)
-
- 结果:
- {'2', '3', '4', '1', '5'} #无序的,你第二遍运行可能就会不同
- {'2', '3', '4', '1', '5'} #去除重复的元素
- {1, 2, 3, 4} #按大小顺序给我们显示出来
- {1, 2, 3, 4} #也会给我们去重
- {1, 10, 20, 30} #按大小顺序给我们显示出来,同时去重
- {'年龄', '姓名'} #会把字典里的键名放在集合里
变量名称 = set( 元素 ) 元素数据类型只能是字符串、列表、元组、字典
变量名称 = { 元素} 元素数据类型只能是数字、字符串、元组
常用操作
不支持下标索引访问(因为集合本身是无序的)
允许修改
| 集合.add(元素) | 将指定的元素添加到集合内 |
| 集合一.update(集合二) | 将两集合合并,合并到集合一里(集合二不变) |
| 集合.remove(元素) | 将指定的元素,从集合中移除 |
| 集合.pop() | 随机取出一个元素 |
| 集合.discard(元素) | 删除指定元素,不存在不做任何操作 |
| 集合一.intersection(集合二) | 集合一与集合二的交集,原集合不变 |
| 集合一.union(集合二) | 两个集合进行合并 ,原集合不变 |
| 集合一.difference(集合二) | 差集,取出集合一有而集合二没有的,原集合不改变 |
集合一.difference_update(集合二) | 消除差集:在集合一内,删除和集合二相同的元素 集合一改变,集合二不变 |
| 集合.clear() | 清空集合 |
| len(集合) | 统计集合中元素的数量 |
| 集合.copy() | 拷贝集合 |
| for in | 集合的遍历 |
集合.add(元素) 将指定的元素添加到集合内
- eg:
- set_01 = {1,2,3,"l love"}
- print(set_01)
- set_01.add("you")
- print(set_01)
-
- 结果:
- {1, 2, 3, 'l love'}
- {'you', 1, 2, 3, 'l love'} #因为集合本身是无序的
集合一.update(集合二) 将两集合合并,合并到集合一里(集合二不变)
- eg:
- print(set_01)
- set_02 =(4,5,6)
- print(set_02)
- set_01.update(set_02)
- print(set_01)
- print(set_02)
-
-
- 结果:
- {1, 2, 3, 'l love', 'you'}
- (4, 5, 6)
- {1, 2, 3, 'l love', 4, 5, 6, 'you'} #集合的排列是随机排列的
- (4, 5, 6)
集合.remove(元素) 将指定的元素,从集合中移除
- eg:
- print(set_01)
- set_01.remove(4)
- print(set_01)
- set_01.remove(4)
-
- 结果:
- {1, 2, 3, 4, 5, 6, 'you', 'l love'}
- {1, 2, 3, 5, 6, 'you', 'l love'}
- Traceback (most recent call last): #4不存在,报错
- File "D:\pycharm\main.py", line 39, in
- set_01.remove(4)
- KeyError: 4
集合.pop() 随机取出一个元素
- eg:
- print(set_01)
- set_01.pop()
- print(set_01)
-
- 结果:
- {1, 2, 3, 4, 5, 6, 'l love', 'you'}
- {2, 3, 4, 5, 6, 'l love', 'you'}
集合.discard(元素) 删除指定元素,不存在,则不做任何操作
- eg:
- print(set_01)
- set_01.discard("you")
- print(set_01)
- set_01.discard("you") #不存在,也不会报错
- print(set_01)
-
- 结果:
- {1, 2, 3, 4, 5, 6, 'you', 'l love'}
- {1, 2, 3, 4, 5, 6, 'l love'}
- {1, 2, 3, 4, 5, 6, 'l love'} #不存在,则不做任何操作
& 交集 求相交的(共有的)
| 并集 求合并的(两集合合并,并且去重)
- eg:
- set_01 = {1,2,3,5,6,"l love"}
- set_02 = {4,5,6,"l love","you"}
- print(set_01 & set_02) #求相交的(共有的)
- print(set_01 | set_02) #求合并的(两集合合并,并且去重)
- print(set_01)
- print(set_02)
-
- 结果:
- {'l love', 5, 6}
- {1, 2, 3, 'you', 5, 6, 4, 'l love'}
- {1, 2, 3, 5, 6, 'l love'} #不会改变集合本身
- {'you', 4, 5, 6, 'l love'}
集合一.intersection(集合二) 求集合一与集合二的交集
- eg:
- print(set_01)
- print(set_02)
- set_01.intersection(set_02) #与&的效果相同
- print(set_01.intersection(set_02))
- print(set_01) #不会改变集合本身
- print(set_02)
-
- 结果:
- {1, 2, 3, 5, 6, 'l love'}
- {4, 5, 6, 'l love', 'you'}
- {'l love', 5, 6}
- {1, 2, 3, 5, 6, 'l love'}
- {4, 5, 6, 'l love', 'you'}
集合一.union(集合二) 两个集合进行合并 ,原集合不变
- eg:
- print(set_01)
- print(set_02)
- set_01.union(set_02)
- print(set_01.union(set_02))
- print(set_01) #不会改变集合本身
- print(set_02)
-
- 结果:
- {1, 2, 3, 5, 6, 'l love'}
- {4, 5, 'l love', 6, 'you'}
- {1, 2, 3, 4, 5, 6, 'l love', 'you'} #与 | 的效果相同,会去重
- {1, 2, 3, 5, 6, 'l love'}
- {4, 5, 'l love', 6, 'you'}
集合一.difference(集合二) 差集,取出集合一有而集合二没有的,原集合不改变
- eg:
- print(set_01)
- print(set_02)
- set_01.difference(set_02)
- print(set_01.difference(set_02))
- print(set_01)
- print(set_02)
-
- 结果:
- {1, 2, 3, 'l love', 5, 6}
- {'l love', 4, 5, 6, 'you'}
- {1, 2, 3} #取出合一有而集合二没有的,原集合不改变
- {1, 2, 3, 'l love', 5, 6}
- {'l love', 4, 5, 6, 'you'}
集合一.difference_update(集合二) 消除差集:在集合一内,删除和集合二相同的元素 集合一改变,集合二不变
- eg:
- print(set_01)
- print(set_02)
- set_01.difference_update(set_02)
- print(set_01.difference_update(set_02))
- print(set_01)
- print(set_02)
-
-
- 结果:
- {1, 2, 3, 5, 6, 'l love'}
- {4, 5, 6, 'l love', 'you'}
- None #因为已经进行过一次了,使集合一已经发生改变,无操作返回None
- {1, 2, 3} #集合一改变
- {4, 5, 6, 'l love', 'you'} #集合二不变
集合.clear() 清空集合
- eg:
- print(set_01)
- print(set_02)
- set_01.clear()
- print(set_01)
- print(set_01.clear())
- print(set_01)
- print(set_02)
-
-
- 结果:
- {1, 2, 3, 5, 6, 'l love'}
- {'you', 4, 5, 6, 'l love'}
- set() #清空集合后返回一个set()函数,表示空集合
- None #空集合无可清空,即返回None
- set() #返回一个set()函数,表示空集合
- {'you', 4, 5, 6, 'l love'}
len(集合) 集合中元素的数量
- eg:
- print(set_01)
- len(set_01) #统计集合中元素的个数,不会直接打印
- print(len(set_01))
- print(set_01)
-
-
- 结果:
- {1, 2, 3, 'l love', 5, 6}
- 6
- {1, 2, 3, 'l love', 5, 6} #不改变集合本身
集合.copy() 拷贝集合(对拷贝的副本进行的操作与原先集合无关系)
- eg:
- print(set_01)
- set_01.copy() #拷贝集合的内容,不打印
- print(set_01.copy())
- print(type(set_01.copy()))
- print(set_01)
-
- 结果:
- {1, 2, 3, 'l love', 5, 6}
- {1, 2, 3, 'l love', 5, 6}
- <class 'set'> #类型还是集合
- {1, 2, 3, 'l love', 5, 6} #不改变集合本身
扩展:
在python内置解释器里,对于上述操作显示不需要了,可以用于清屏,之前的操作还是存在的
- >>>import os
- >>>os.system("cls")



字典:键值对的形式存在 (key(键):value(值))
关键字(即键)不可变 不重复(重复会爆红) 无下标索引
按照key找到value
键 可以为任意不可变数据(元组,数字,字符串)
- eg:
- my_dict={
- key:value, #键值对
- key:value,
- key:value
- }
my_dict={ }
my_dict=dict() dict()也是强制转换
- eg:
- dict_00 = {} #注意:这是字典不是集合
- print(type(dict_01))
- print(dict_00)
-
- dict_01 = {
- "uname":"zhangsan", #键是字符串(最常见)
- "age":18,
- 1:18, #键是数字
- (1,2,3):18 #键是元组
- }
- print(type(dict_01))
- print(dict_01)
-
- dict_02 = dict()
- print(type(dict_02))
- print(dict_02)
-
- dict_03 = dict((["uname","zhangsan"],["age",18])) #赋值方式
- print(type(dict_03))
- print(dict_03)
-
-
- 结果:
- <class 'dict'>
- {}
- <class 'dict'> #类型字典
- {'uname': 'zhangsan', 'age': 18, 1: 18, (1, 2, 3): 18} #字典的内容
- <class 'dict'>
- {} #空字典
- <class 'dict'>
- {'uname': 'zhangsan', 'age': 18}
| 字典[key]=value | 新增元素 |
| del 字典[key] | 删除元素 |
| 字典[key]=value | 更新元素 |
| 字典[key] | 查询元素(值) |
| 字典.get(key) | 查询元素(值) |
| 字典.keys() | 获取全部key |
| 字典.items() | 获取全部键值对 |
| 字典.values() | 获取全部value |
| 字典.clear() | 清空元素 |
| 字典.copy() | 拷贝字典 |
| 新字典名.fromkeys(key,value) | 创建一个新字典 |
| 字典.pop(key) | 删除元素 |
| 字典.popitem() | 删除最后一项元素并返回 |
| 字典一.update(字典二) | 将两字典合并,合并到字典一里(字典二不变) |
| key in(not in) 字典 | 判断元素是否在字典里 |
| 1、for i in 字典: 2、for key in 字典.keys() 3、for key in 字典.values() 4、for key in 字典.items() | 遍历(迭代)字典,获取键/值/键值对 |
| len() | 统计字典的元素数量 |
字典[key]=value 新增元素
- eg:
- dict_01 = {
- "姓名":"张三",
- "年龄":18
- }
- print(dict_01)
-
- dict_01["技能"] = "python"
- print(dict_01)
-
-
- 结果:
- {'姓名': '张三', '年龄': 18}
- {'姓名': '张三', '年龄': 18, '技能': 'python'}
del 字典[key] 删除元素
- eg:
- print(dict_01)
- del dict_01["姓名"]
- print(dict_01)
-
-
- 结果:
- {'姓名': '张三', '年龄': 18, '技能': 'python'}
- {'年龄': 18, '技能': 'python'}
字典[key]=value 更新元素
- eg:
- print(dict_01)
- dict_01["技能"] = "安全渗透"
- print(dict_01)
-
- 结果:
- {'年龄': 18, '技能': 'python'}
- {'年龄': 18, '技能': '安全渗透'}
字典[key] 查询元素(值)
- eg:
- print(dict_01)
- print(dict_01["技能"])
-
-
- 结果:
- {'年龄': 18, '技能': '安全渗透'}
- 安全渗透
字典.get(key) 查询元素(值)
get函数用于在字典中获取指定键的值,可以设置默认返回值,在找的键不存在时,就会将默认值返回出来
- eg:
- print(dict_01)
- print(dict_01.get("技能"))
- print(dict_01.get("姓名"))
- print(dict_01.get("姓名","l love you")) #修改默认值
-
-
- 结果:
- {'年龄': 18, '技能': '安全渗透'}
- 安全渗透
- None #若获取的东西没有时,返回None(表示无)
- l love you #将默认值修改
字典.keys() 获取全部key(以列表的形式返回字典中所有的键)
- eg:
- dict_01 = {
- "uname":"zhangsan",
- "age":21
- }
- print(dict_01.keys())
-
- 结果:
- dict_keys(['uname', 'age'])
字典.items() 获取全部键值对
- eg:
- dict_01 = {
- "uname":"zhangsan",
- "age":21
- }
- print(dict_01.items())
-
- 结果:
- dict_items([('uname', 'zhangsan'), ('age', 21)])
字典.values() 获取全部value
- eg:
- dict_01 = {
- "uname":"zhangsan",
- "age":21
- }
- print(dict_01.values())
-
- 结果:
- dict_values(['zhangsan', 21])
字典.clear() 清空元素
- eg:
- dict_01 = {
- "uname":"zhangsan",
- "age":21
- }
- print(dict_01.clear())
- print(dict_01)
-
- 结果:
- None #无元素返回None
- {}
字典.copy() (对拷贝的副本进行的操作与原先集合无关系)
- eg:
- dict_01 = {
- "uname":"zhangsan",
- "age":21
- }
- dict_01.copy()
- print(dict_01.copy())
- print(dict_01)
-
- 结果:
- {'uname': 'zhangsan', 'age': 21}
- {'uname': 'zhangsan', 'age': 21}
新字典名.fromkeys(key,value) 创建一个新字典,第一个参数用于作为字典的键,第二个参数用于作为字典的值(第二个参数可以为任何数据)
- eg:
- d1 = dict_01.fromkeys(("姓名","年龄"),("zhangsan",21))
- print(d1)
-
- 结果:
- {'姓名': ('zhangsan', 21), '年龄': ('zhangsan', 21)}
- #不太智能,只能把后面的值作为一个整体给前面的键都赋同样的值
字典.pop(key) 删除元素
- eg:
- dict_01 = {
- "uname":"zhangsan",
- "age":21
- }
- dict_01.pop("uname")
- print(dict_01)
-
- 结果:
- {'age': 21}
-
-
- eg:
- dict_01 = {
- "uname":"zhangsan",
- "age":21
- }
- print(dict_01.pop("uname")) #会打印删除的值
- print(dict_01)
-
- 结果:
- zhangsan
- {'age': 21}
-
-
- eg:
- dict_01 = {
- "uname":"zhangsan",
- "age":21
- }
- dict_01.pop("uname")
- print(dict_01.pop("uname"))
- print(dict_01) #无删除元素会报错
-
- 结果:
- Traceback (most recent call last):
- File "D:\pycharm\main.py", line 63, in
- print(dict_01.pop("uname"))
- KeyError: 'uname'
-
字典.popitem() 删除元素的最后一项,并以元组的形式将删除的键值对返回
- eg:
- dict_01 = {
- "uname":"zhangsan",
- "age":21
- }
- d1 = dict_01.popitem() #返回但不打印
- print(d1)
- print(dict_01)
-
- 结果:
- ('age', 21)
- {'uname': 'zhangsan'}
字典一.update(字典二) 将两字典合并,合并到字典一里(字典二不变)
- eg:
- dict_01 = {
- "uname":"zhangsan",
- "age":21
- }
- dict_02 = {
- "uname":"zhang",
- "姓名":"zhangsan"
- }
- print(dict_01)
- print(dict_02)
- dict_01.update(dict_02)
- print(dict_01) #如果两字典有相同的键,将字典二的键值对覆盖字典一
- print(dict_02)
-
- 结果:
- {'uname': 'zhangsan', 'age': 21}
- {'uname': 'zhang', '姓名': 'zhangsan'}
- {'uname': 'zhang', 'age': 21, '姓名': 'zhangsan'}
- {'uname': 'zhang', '姓名': 'zhangsan'}
key in(not in) 字典 判断元素是否在字典里
- eg:
- dict_01 = {
- "uname":"zhangsan",
- "age":21
- }
-
- print("uname" in dict_01)
- print(21 in dict_01)
- print("uname" not in dict_01)
- print(21 not in dict_01)
-
- 结果:
- True
- False
- False
- True
for i in 字典: 获取字典的值
- 例:
- dict_01 = {
- "uname": "zhangsan",
- "age": 21,
- "技能": "python"
- }
-
-
- print(dict_01)
- for i in dict_01:
- print(dict_01[i])
-
-
- 结果:
- {'uname': 'zhangsan', 'age': 21, '技能': 'python'}
- zhangsan
- 21
- python
for key in 字典.keys() 获取字典的键
- 例:
- dict_01 = {
- "uname": "zhangsan",
- "age": 21,
- "技能": "python"
- }
-
- print(dict_01.keys())
- for i in dict_01.keys():
- print(i)
-
-
- 结果:
- dict_keys(['uname', 'age', '技能'])
- uname
- age
- 技能
for key in 字典.values() 获取字典的值
- 例:
- dict_01 = {
- "uname": "zhangsan",
- "age": 21,
- "技能": "python"
- }
-
- print(dict_01.values())
- for i in dict_01.values():
- print(i)
-
-
- 结果:
- dict_values(['zhangsan', 21, 'python'])
- zhangsan
- 21
- python
for key in 字典.items() 获取字典的键值对
- 例:
- dict_01 = {
- "uname": "zhangsan",
- "age": 21,
- "技能": "python"
- }
-
- print(dict_01.items())
- for k, v in dict_01.items():
- print(k, ">>", v)
-
-
- 结果:
- dict_items([('uname', 'zhangsan'), ('age', 21), ('技能', 'python')])
- uname >> zhangsan
- age >> 21
- 技能 >> python
-
my_dict={
key:{
key:value, #键值对
key:value,
key:value
}}

- eg:
- my_dict={
- "王力宏":{
- "语文":77,
- "数学":66,
- "英语":33
- },
- "周杰伦":{
- "语文":88,
- "数学":86,
- "英语":55
- },
- "林俊杰":{
- "语文":99,
- "数学":96,
- "英语":66
- }
- }
- print(my_dict["王力宏"]["语文"])
-
-
-
- 结果:
- 77

