list
del list1[0]
print(list1)
tuple
del tuple1[0]
TypeError: ‘tuple’ object doesn’t support item deletion
元组内元素不能被删除
print(tuple1)
set
for i in set1:
del i
dict
del dict1[‘name’]
del 在dict中删除的是键值对
print(dict1)
str
TypeError: ‘str’ object doesn’t support item deletion
str 不能够使用del 删除内部元素
注意 :str内部的元素也是不可修改的,类似于元组
del str1[0]
print(str1)
结论:
1.列表,字典可以使用del删除内部元素,但是,列表中是删除元素,字典中是删除键值对
2.使用del 没法循环遍历删除set中的元素,因为引用机制问题
3.str tuple内部的元素都不可更改所以不能使用del删除元素
max min
list tuple set str可以使用max min获取容器内的最大最小值
print(max(list1))
print(max(tuple1))
print(max(set1))
print(max(str1))
dict是使用max和min获取键的最大最小值
print(max(dict1))
enumerate 枚举函数:获取容器内数据时添加序号(默认序号从0开始可以作为索引使用)
list2 = [1, 2, 3, 4, 5, 6, 7, 8]
for i in list2:
print(i)
可不可以同时获取元素的值和元素的索引? 可以 使用enumerate
for i in enumerate(list2):
# 直接打印,获取的是以(索引,值)组成的元组
print(i)
list
for index, value in enumerate(list2):
print(index, value, sep=’ : ')
tuple
for index, value in enumerate(tuple1):
print(index, value, sep=’ : ')
set
for index, value in enumerate(set1):
print(index, value, sep=’ : ')
str
for index, value in enumerate(str1):
print(index, value, sep=’ : ')
dict
for index, value in enumerate(dict1):
print(index, value, sep=’ : ')
结论:所有的容器和课迭代类型都可以使用enumerate,并且产生序号,这个序号并不是索引值,而是在生成序号时默认从0开始,碰巧可以在list,str,tuple中当做索引使用
### 3、推导式
* 列表推导式
+ 格式:[要插入的值 for 临时变量 in 数据序列 if 条件]
* 集合推导式
+ 格式:{要插入的值 for 临时变量 in 数据序列 if 条件}
* 字典推导式
+ 格式:{要插入的键:要插入的值 for 临时变量 in 数据序列 if 条件 }
* 没有元组推导式和字符串推导式,因为其内部元素无法被修改
推导式:通过一定的规则快速构建数据序列
列表推导式
获取从0 到9的数据序列
while
list1 = []
i = 0
while i < 10:
list1.append(i)
i += 1
print(list1)
for
list2 = []
for i in range(10):
list2.append(i)
print(list2)
推导式
格式: [要插入列表的表达式 for 临时变量 in 数据序列]
list3 = [i for i in range(10)]
print(list3)
使用推导式,创建一个从1-100的偶数的数据序列
for
list4 = []
for i in range(1, 101):
if i % 2 == 0:
list4.append(i)
print(list4)
推导式
格式: [要插入列表的表达式 for 临时变量 in 数据序列 if 条件]
list5 = [i for i in range(1, 101) if i % 2 == 0]
print(list5)
练习:
用推导式进行九九乘法表的生成,将所有的算式放入列表中
list6 = []
for i in range(1, 10):
for j in range(1, i + 1):
list6.append(f’{j} * {i} = {j * i}')
print(list6)
改写为推导式:
list7 = [f’{j} * {i} = {j * i}’ for i in range(1, 10) for j in range(1, i + 1)]
print(list7)
集合推导式
集合推导式和列表推导式完全一致,只不过使用推导式时,外层用{}包裹,并且在序列中会去重
set1 = {i for i in range(10)}
print(set1)
获取从1-10 的偶数集合
set2 = {i for i in range(1, 11) if i % 2 == 0}
print(set2)
字典推导式
keys = [‘name’, ‘age’, ‘gender’, ‘id’]
values = [‘xiaoming’, 18, ‘女’, ‘001’]
需求想将key 和value以一对应,形成一个字典
dict1 = {}
for i in range(len(keys)):
dict1[keys[i]] = values[i]
print(dict1)
改写推导式
格式:{要插入的键:要插入的值 for 临时变量 in 数据序列 if 条件}
dict2 = {keys[i]: values[i] for i in range(len(keys))}
print(dict2)
所有的推导式都可以使用for循环改写,所以我们进行推导式的时候先不要急于求成,多改写几次就不用再改写了直接可以写出推导式
### 4、函数介绍
* 函数的定义:
+ def 函数名(参数):
函数体
return 返回值
* 函数的调用:函数名(参数)
函数: 将特定的功能所对应的代码片段进行打包,封存在一个函数内,如果我们想要重复使用该功能,就直接调用函数即可
函数的作用: 提高代码复用率,提高开发效率,易于维护
‘’’
函数定义的格式:
def 函数名(参数1, 参数2,参数3…):
函数体
return 返回值
函数调用的格式:
函数名(参数1,参数2,参数3…)
函数名:绝大多数函数都有函数名,没有函数名的函数不能被复用
参数:为了让函数灵活性更高,更容易被复用,会动态对函数进行传值,传递的值可以在函数体内部进行使用
函数体: 特定功能的代码,写在函数内部,调用函数时可全部执行
返回值: 写在return之后,将函数内部计算或运行得到的数据传递到函数体外部
‘’’
定义的时候可以不传参,如果不传调用的时候也不用传参
def run():
print(‘我跑的老快了,没人追的上我,钱包在我手里’)
print(‘我跑的老快了,没人追的上我,手机在我手里’)
print(‘我跑的老快了,没人追的上我,女朋友在我手里’)
调用时可以将函数内的代码全部执行一遍
run()
run()
* 函数的调用顺序:从上到下依次执行,先键函数名保存到函数列表中,调用的时候去类表中查询,如果存在则调用其中的代码,如果不存在则报错
NameError: name ‘sing’ is not defined
函数需要先定义后调用否则会报错
sing()
定义一个唱歌方法
def sing():
print(‘我再唱青藏高原’)
定义一个跳舞方法
def dance():
print(‘我再跳广场舞’)
sing()
dance()
执行顺序: 先讲所有函数的函数名执行一遍将其储存到缓存中的方法列表中,后续调用函数时去方法列表中查询,如果函数名存在,则调用函数内部的代码,如果函数名不存在将报错
### 5、函数参数
* 函数的参数可以增加代码的灵活性
+ 在定义时传入的参数是形参,只能在函数体内部使用
+ 在调用的时候传入的参数是实参,可以传入到函数体内部被形参接收
定义一个eat方法,通过传入不同的参数,可以输出不同的生物吃不同的食物
def eat_cat():
print(‘猫吃鱼’)
def eat_dog():
print(‘狗吃肉’)
def eat_person():
print(‘人吃藕’)
上述函数定义方法不太方便,因为如果有更多的生物去吃不同的东西,就要重复书写函数不利于函数的复用
改进 >> 传参
通过传入参数,可以控制函数体内部的执行结果发生变化,让函数更加灵活
def eat(who, food): # 在定义时传入的参数叫做形参,只能在函数体内部使用
print(f’{who}吃{food}')
在调用的时候传入的参数叫做实参,会传入到函数内部被形参接收
eat(‘猫’, ‘🐟’)
eat(‘狗’, ‘肉’)
eat(‘人’, ‘藕’)
TypeError: eat() missing 1 required positional argument: ‘food’
进行传值时需要保证传参数量满足要求,否则会报错
eat(‘人’)
### 6、函数返回值
* 1.返回值是将函数内计算或运行的结果返回到函数外部调用位置,参与计算或运行
* 2.函数可以不写返回值或者只写一个return不写返回值内容,都会默认返回一个None
* 3.return后将会立即跳出函数,如果在retrun后仍有代码,则不会被执行
* 4.return只能返回一个元素,如果想返回多个元素需要使用容器类型
返回值:将函数体内部运行或计算得到的数据传递到函数体外部
def sum(a, b):
print(a + b)
sum(1, 2)
思考?如果我们想在函数体外部使用这个结果进行二次运算我应该怎么做?
NameError: name ‘a’ is not defined a, b 是形参,只能在函数体内部使用
print(a + b)
如果我们想将数据传递出来可以使用return
def sum1(a, b):
return a + b
print(sum1(1, 3)) # 当函数执行完毕,函数调用位置就替换为函数的返回值
返回的数据可以参与计算
print(sum1(1, 3) + 12)
注意:返回值内容不会自动打印到控制台,将数据返回后如果想要查看数据需要手动打印或者debug调试
如果没有return 那么就没有返回值么?
list1 = [1, 2]
因为此处,append方法,没有返回值,默认返回None
print(list1.append(3)) # None
def eat():
print(‘猫吃鱼,狗吃肉,奥特曼吃小怪兽’)
如果没有书写返回值,则返回值为None
print(eat()) # None
如果只写了return 没有写返回值内容会怎么样? None
def sum1(a, b):
print(a + b)
return
print(sum1(1, 2)) # None
return 执行后会跳出函数,return之后的所有代码将不会继续执行
在函数中可以有多个return 但是只能执行一个
def function():
print(‘hello python’)
return
return
# 同一分支中,在return之后的所有代码不会被执行
print(‘hello bigdata’)
function()
返回值只能是一个么? 可以返回多个返回值么?
返回值只能是一个元素,如果要返回多个值只能通过容器类型进行打包
def function1():
return 1, 2, 3, 4
print(function1()) # (1, 2, 3, 4)
结论:
‘’’
1.返回值是将函数内计算或运行的结果返回到函数外部调用位置,参与计算或运行
2.函数可以不写返回值或者只写一个return不写返回值内容,都会默认返回一个None
3.return后将会立即跳出函数,如果在retrun后仍有代码,则不会被执行
4.return只能返回一个元素,如果想返回多个元素需要使用容器类型
‘’’
### 7、函数的嵌套
* 在一个函数体内部嵌套了另一个函数的调用
函数的嵌套,就是在一个函数的内部嵌套了另一个函数的调用
def function2():
print(‘我是func2-----’)
function1()
print(‘我是func2-----’)
def function1():
print(‘func1执行开始’)
print(‘func1执行结束’)
def function2():
print(‘我是func2-----’)
function1()
print(‘我是func2-----’)
function2()
执行顺序,只要函数在调用之前被定义即可,定义函数的顺序不做规定
### 后记
📢博客主页:<https://manor.blog.csdn.net>
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 Maynor 原创,首发于 CSDN博客🙉
📢不能老盯着手机屏幕,要不时地抬起头,看看老板的位置⭐
📢专栏持续更新,欢迎订阅:<https://blog.csdn.net/xianyu120/category_11947788.html>
![img](https://img-blog.csdnimg.cn/img_convert/f4680d2e7d5f3552ddce982fc4948111.png)
![img](https://img-blog.csdnimg.cn/img_convert/dd1467538c0c7b82857eae7e689d44ae.png)
![img](https://img-blog.csdnimg.cn/img_convert/b4b06b16740b81f8185e4a22271cfc14.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
📢专栏持续更新,欢迎订阅:<https://blog.csdn.net/xianyu120/category_11947788.html>
[外链图片转存中...(img-CKPU234T-1714222268282)]
[外链图片转存中...(img-T39pv6ys-1714222268282)]
[外链图片转存中...(img-VkadDxU3-1714222268283)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**