Day 04 python学习笔记

Python数据容器

元组

元组的声明

变量名称=(元素1,元素2,元素3,元素4.......) (元素类型可以不同)

python 复制代码
eg:
tuple_01 = ("hello", 1, 2,-20,[11,22,33])
print(type(tuple_01))

结果:
<class 'tuple'>

元组的定义

定义空元组

变量名称=()

变量名称=tuple()

元组的嵌套

((),())

下标索引取出元素====与列表相同

元组的强制转换

typle() 强制转换

元组与列表的区别:

  1. 符号:元组( ) 列表[ ]
  2. 元组的元素一旦定义,不可更改 而列表可以 (最大的区别)
python 复制代码
eg:
tuple_01[1] = "l love you"


结果:
Traceback (most recent call last):
  File "D:\pycharm\main.py", line 5, in <module>
    tuple_01[1] = "l love you"
TypeError: 'tuple' object does not support item assignment

因为元组的元素一旦定义,不可更改

但是:元组里列表元素里的值可以改变

python 复制代码
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])

元组切片

元组的切片和字符串、列表的切片是一样的

python 复制代码
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 () 求元组的长度(与字符串、列表用法相同)

python 复制代码
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 也是元组

python 复制代码
eg:
t = (1, 2, 3)
print(type(t))
t1 = 1, 2, 3
print(type(t1))

结果:
<class 'tuple'>
<class 'tuple'>

单个数字 t = (2) 这是整型,因为解释器认为 () 是运算符

解决方法 t = (2, ) 这即是元组

结论:只有一个元素时,元组后面必须带 ,

python 复制代码
eg:
t1 = (2)
print(type(t1))
t2 = (2, )
print(type(t2))

结果:
<class 'int'>
<class 'tuple'>

元组的乘法

python 复制代码
eg:
>>> t=(22,)
>>> t*10
(22, 22, 22, 22, 22, 22, 22, 22, 22, 22)
>>>

元组的方法:

index

元组.index(元素) 查询某元素下标

python 复制代码
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 "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
>>>
count

元组.count(元素) 统计某元素在列表中的数量

python 复制代码
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() (创建空集合的唯一办法)

注意:{ 元素 } { }内至少有一个元素,此时才是集合,无元素为空集合

python 复制代码
set_01={'gouxin','zhangsan','gouxin','zhangsan','gouxin','zhangsan'}
print(set_01)
python 复制代码
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(元素) | 将指定的元素添加到集合内 |
| 1集合.update(2集合) | 将两集合合并,合并到1集合里(2集合不变) |
| 集合.remove(元素) | 将指定的元素,从集合中移除 |
| 集合.pop() | 随机取出一个元素 |
| 集合.discard(元素) | 删除指定元素,不存在不做任何操作 |
| 集合一.intersection(集合二) | 集合一与集合二的交集,原集合不变 |
| 集合一.union(集合二) | 两个集合进行合并 ,原集合不变 |
| 集合一.difference(集合二) | 差集,取出集合一有而集合二没有的,原集合不改变 |
| 集合一.difference_update(集合二) | 消除差集:在集合一内,删除和集合二相同的元素 集合一改变,集合二不变 |
| 集合.clear() | 清空集合 |
| len(集合) | 统计集合中元素的数量 |
| 集合.copy() | 拷贝集合 |
| for in | 集合的遍历 |

add

集合.add(元素) 将指定的元素添加到集合内

python 复制代码
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

1集合.update(2集合) 将两集合合并,合并到1集合里(2集合不变)

python 复制代码
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

集合.remove(元素) 将指定的元素,从集合中移除

python 复制代码
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 <module>
    set_01.remove(4)
KeyError: 4
pop

集合.pop() 随机取出一个元素

python 复制代码
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

集合.discard(元素) 删除指定元素,不存在,则不做任何操作

python 复制代码
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'}    #不存在,则不做任何操作
交集和并集

& 交集 求相交的(共有的)

| 并集 求合并的(两集合合并,并且去重)

python 复制代码
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

集合一.intersection(集合二) 求集合一与集合二的交集

python 复制代码
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

集合一.union(集合二) 两个集合进行合并 ,原集合不变

python 复制代码
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

集合一.difference(集合二) 差集,取出集合一有而集合二没有的,原集合不改变

python 复制代码
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

集合一.difference_update(集合二) 消除差集:在集合一内,删除和集合二相同的元素 集合一改变,集合二不变

python 复制代码
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

集合.clear() 清空集合

python 复制代码
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

len(集合) 集合中元素的数量

python 复制代码
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

集合.copy() 拷贝集合

python 复制代码
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内置解释器里,对于上述操作显示不需要了,可以用于清屏,之前的操作还是存在的

python 复制代码
>>>import os
>>>os.system("cls")

字典

字典的定义:

字典:键值对的形式存在 (key(键):value(值))

关键字(即键)不可变 不重复(重复会爆红) 无下标索引

按照key找到value

键 可以为任意不可变数据(元组,数字,字符串)

python 复制代码
eg:
my_dict={
key:value, #键值对
key:value,
key:value
}

创建空字典

my_dict={ }

my_dict=dict()

python 复制代码
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) | 查询元素(值) |
| 字典.pop(key) | 删除元素 |
| 字典.clear() | 清空元素 |
| 字典.keys() | 获取全部key |
| 1、for key in keys: 2、for key in 字典 | 遍历字典 |
| len() | 统计字典的元素数量 |

字典[key]=value 新增元素

python 复制代码
eg:
dict_01 = {
    "姓名":"张三",
    "年龄":18
}
print(dict_01)

dict_01["技能"] = "python"
print(dict_01)


结果:
{'姓名': '张三', '年龄': 18}
{'姓名': '张三', '年龄': 18, '技能': 'python'}
删(del关键字)

del 字典[key] 删除元素

python 复制代码
eg:
print(dict_01)
del dict_01["姓名"]
print(dict_01)


结果:
{'姓名': '张三', '年龄': 18, '技能': 'python'}
{'年龄': 18, '技能': 'python'}
改(重新赋值)

字典[key]=value 更新元素

python 复制代码
eg:
print(dict_01)
dict_01["技能"] = "安全渗透"
print(dict_01)

结果:
{'年龄': 18, '技能': 'python'}
{'年龄': 18, '技能': '安全渗透'}

字典[key] 查询元素(值)

python 复制代码
eg:
print(dict_01)
print(dict_01["技能"])


结果:
{'年龄': 18, '技能': '安全渗透'}
安全渗透
查(get函数)

字典.get(key) 查询元素(值)

get函数用于在字典中获取指定键的值,可以设置默认返回值,在找的键不存在时,就会将默认值返回出来

python 复制代码
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    #将默认值修改

字典的嵌套

my_dict={

key:{

key:value, #键值对

key:value,

key:value

}

}

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



结果:
77
练习:
相关推荐
华科云商xiao徐几秒前
多语言编写的图片爬虫教程
前端
isfox3 分钟前
速学!Java 原子操作,开启并发编程新境界
后端·程序员
日升_rs3 分钟前
Electron 开发:获取当前客户端 IP
前端·javascript
maizeman1266 分钟前
R语言——散点图
开发语言·r语言·可视化·散点图
狗蛋不是狗6 分钟前
Python 实现的运筹优化系统数学建模详解(最大最小化模型)
python·数学建模·优化算法·狗蛋不是狗·最大最小化模型
楽码8 分钟前
只需一文!深入理解闭包的实现
后端·go·编程语言
小白—人工智能9 分钟前
数据可视化 —— 折线图应用(大全)
python·信息可视化·数据可视化
华科云商xiao徐9 分钟前
Python使用爬虫IP抓取数据过程
前端
前端大卫11 分钟前
你所不知道的 9个CSS 小知识!
前端·css
BanyeBirth13 分钟前
C++高精度算法(加、减、乘)
开发语言·c++·算法