学习视频:黑马程序员
函数
组织好的,可重复使用的,用来实现特定功能的代码段
关键字:def
定义:
def 函数名(传入参数):
函数体
return 返回值
先定义,后使用
没有使用return语句返回数据,函数其实也有返回值,是一个特殊的字面量:None,类型事<vlasss ‘Nonetype’>
在 if 判断中,None 等同于 False
函数的说明文档(注释)一般放在函数体之前
函数内的局部变量在函数执行完后就被销毁了
global 关键字,声明当前变量是全局变量
数据容器
list(列表)
变量名 = [元素1,元素2,…,元素n]
变量名=[ ] 变量名=list()
可以为不同的数据类型,支持嵌套
可以用下标索引访问,从前往后从0开始,每次+1, 从后向前从-1开始,每次-1
常用操作(方法):
查找下表:list.index(元素) #返回的是正向索引,不存在会报错
修改指定下标的值:list[index] = 值
插入:list.insert(下表, 元素)
追加元素到尾部:
单个:list.append(元素)
一批:list.extend(其他数据容器),将其他数据容器的内容取出,一次追加到列表尾部
删除元素:
del list[index]
list.pop(index) 取出元素,并删除
list.remove(元素) 删除某元素在列表中的第一个匹配项
list.clear() 清空列表
统计元素在列表中的数量
list.count(元素)
统计列表中全部元素数量
len(list)
tuple(元组)
元组一旦定义完成,就不可修改。可以看成一个只读的list
变量名 = (元素,元素,……,元素)
变量名 = ( )
变量名 = tuple()
定义单个元素元组,在后面加个 ‘ , ‘ 区分,如:temp = (“hello” , )
当在元组中定义了一个list时,可以修改这个lsit的内容
str(字符串)
这里的字符串也是一个数据容器,也是不可修改的
支持通过下标索引取值
常用操作:
查找元素下表:str.index(“value”)
替换(这是得到一个新的字符串): new_str=str.replace(原字符串,新字符串)
分割(返回一个列表,里面是多个字符串):list_str = str.split(分隔字符)
规整:
str.strip() 去除前后的空格和回车
str.strip(str1) 去除前后的str1中包含的的所有字符
计数:str.count(str1) str1出现的次数
长度:len(str)
前面的列表、元组、字符串都是序列(内容连续、有序、支持下表索引),支持一个序列的常规操作——切片
对序列切片操作不会影响序列本身,而是会得到一个新的序列
my_list = [0,1,2,3,5,6,8]
result1 = my_list[1:5] #取第一个到第五个,步长为1,可以省略,步长为2:[1:5:2]
my_tuple = (0,1,2,4,5,8,9)
result2 = my_tuple[:] #起始和结束表示从头到尾,步长为1,可以省略
print(result1)
#[1, 2, 3, 5]
print(result2)
#(0, 1, 2, 4, 5, 8, 9)
当步长为负数时,表示从后向前取,所以前面的两个数是先大的后小的
要取到最后或者最前可以不写空着,如[6::-1],这就代表从第六个开始取,取到最前面这个。
set(集合)
不包含重复元素,是无序的,添加重复元素无效
变量名 = {元素,元素,…,元素}
变量名 = set()
因为无序,所以不能通过下标索引访问,但是其允许修改
常用操作:
添加:set.add()
移除:set.remove(指定元素) #集合中没有会报错
随机取出:set.pop() #随机取出一个,集合中的就去除
清空:set.clear()
取两个集合的差集:set1.difference(set2) 取出set1有而set2没有的,返回一个新集合
消除差集(只保留没有的):set1.difference_update(set2) set2不变,set1删除和set2相同的元素
合并集合:set1.union(set2) 返回一个新集合
计数:len(set)
dict(字典、映射)
变量名 = {key: value,key: value,……,key: value }
变量名 = { } #空字典,不是空集合
变量名 = dict()
无序的,没有下标索引,只能通过key获取value
key和value可以是任意类型(key不能为字典),可嵌套(value为字典)
常用操作:
新增(更新):dict[key] = value
删除:dict.pop(key) 返回对应的value,同时在dict中删除
清空:dict.clear()
获取全部的key:dict.keys()
for 遍历 得到的是 key
计数:len(dict)
小结
数据容器的通用操作:
统计元素个数:len(容器)
最大元素:max(容器) dict返回的是key
最小元素:min(容器)
类型转换:转列表 list(容器);转字符串 str(容器);转元组tuple(容器);转集合 set(容器)
字典转换成其他的会丢失value,不能转换成字典
排序:sorted(容器),排序后的结果是列表
反向排序:sorted(容器, reverse=True)
函数进阶
多个返回值
def test_return():
return 1,2
x,y = test_return()
#按照返回值的顺序,写对应顺序的多个变量接收即可
#变量之间用逗号隔开
#支持不同类型的数据return
如果只是用一个值接收,会得到一个元组,其他情况少了就会报错。
参数传递
正常位置传参:在哪个位置就写那里
关键字传参:键=值 方式 如 有参数 name,age 调用可以写 age=xx , name = xxx 顺序不影响
和位置参数相互使用时,位置参数要在关键字参数前面
缺省参数:可以设置一个默认值,必须放在最后面
不定长参数(可变参数):*args
关键字传递不定长:**kwargs #kw 表示 key word
匿名函数
函数作为参数传递:传递的时逻辑,不是数据
lambda匿名函数:
语法:lambda 传入参数 : 函数体(一行代码)
lambda是关键字,表定义匿名函数
传入参数表示匿名函数的形式参加,如:x , y 表示接受2个形式参数
函数体,就是函数的执行逻辑,要注意:只能写一行,无法写多行代码
函数当作参数传入,和直接在函数里面调用感觉没差,但是有了lambda后,就有很多操作空间了
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/python/279734.html