1. 拆包
元组:
def func(a,b):
return a,b
num1 , num2 = func(10,20)
字典:
dict1 = {
'姓名':'Ray','年龄':18}
key1 , key2 =dict1
print(key1)
print(key2) # 拆包得到的是key值
print(dict1[key1])
print(dict1[key2])
# 姓名
# 年龄
# Ray
# 18
2. 交换变量
a = 10
b = 20
a,b = b,a
3. 数据类型
数据能够直接进行修改,如果能则是可变类型,如果不行则是不可变类型
可变类型:列表 字典 集合
不可变类型:整型 浮点型 字符串 元组
4. lambda表达式
如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化
语法:函数名 = lambda 参数列表:表达式
注意:
lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用
lambda表达式能接受任何数量的参数但是只能返回一个表达式的值
fn1 = lambda a,b,c=100:a+b+c # 默认参数
fn2 = lambda *args : args # 可变参数
fn3 = lambda **kwargs : kwargs # 可变参数
func = lambda a,b : a if a>b else b # 带判断的表达式
字典数据排序:
students = [
{
'name':'Tom','age':20},
{
'name':'Jerry','age':22},
{
'name':'Ray','age':24}
]
students.sort(key = lambda s:s['name']) # 按姓名升序
students.sort(key = lambda s:s['name'],reverse = True) # 按姓名降序
5. 高阶函数
某个函数作为另一个函数的参数传入
def add_num(a,b,f):
return f(a)+f(b)
print(add_num(10,-2,abs))
6. 内置高阶函数
6.1 map()
map(func,lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表
list1 = [1,2,3,4,5]
def func(x):
return x**2
result = map(func,list1)
print(list(result)) # 需要将数据类型转化为list
6.2 reduce()
reduce(func,lst),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累计计算
注意:reduc()传入的参数func必须接收两个参数
import functools
list1 = [1,2,3,4,5]
def func(a,b):
return a+b
result = functools.reduce(func,list1)
print(result) # 15
6.3 filter()
filter(func,lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象
list1 = [1,2,3,4,5]
def func(x):
return x%2 == 0
result = filter(func,list1)
print(list(result))