python高级函数及列表生成器

增加数据,除了append,还有insert,且insert可以根据序号插入数据,而append只能末尾插入
ex:
#增加
lst = [1, 3, 5, 7, 9]
#在序号2的位置,插入4
lst.insert(2, 4) #[1, 3, 4, 5, 7, 9]
print(lst)

pass语句:占位语句,或者说是空语句,为了保持程序结构的完整性;该语句不止在控制语句中使用,可用到大多数地方,用途是表示程序结构的完整,在编写预留功能或语句是方便简洁

def的自定义函数里的return意味着函数的结束;如果不带return函数,意味着返回None,类似c#里的void

lambda函数:该函数是无函数名的自定义函数
形式: lambda x:x+1
其中,x是形参,x+1是函数

lambda函数一般用于简单的只需要一行写完的自定义函数中

序列:一维元素向量,元素类型可不同;它是由序号引导,通过下标访问特定元素;序列也是一个基类类型;另外它是可进行迭代;序列主要类型有列表,元祖,字符串

map函数:对序列元素里的每个值一一进行函数的操作;注意,只有序列才能使用map函数,即只能用字符串,元祖和列表,且将序列里的元素拆开后再依次代入
ex: map(lambda x: x+1, [1,2,3])

reduce函数:把一个函数作用在一个序列[x1,x2,x3…],这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做积累计算
ex:
reduce(lambda x,y:x+y,[1,3,5,7,9], 10)

filter函数:用于过滤序列,filter函数主要是把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素,最后返回结果全是true的原始值。
ex:
list(filter(lambda x:x>0,[1,2,3,4,-6]))

zip函数:将几个序列依据各个序列的序号一一对应,以两个序列中元素最少的序列作为基准,形成n个新元组;类似拉链拉起来过程中的一一对应
ex:list(zip([“a”,“b”,“c”],[1,2,3,4],[5,6,7,8]))
*星号还有打碎当前结构的意思,比如如果一个列表里有三个元素,如果使用星号的话,当前的列表就被打碎而让里面的3个元素流出来
ex:
L=[(‘a’, 3, 5), (‘b’, 6, 2), (‘c’, 1, 7)]
list(zip(L)) #这里的星号将只有一条链的L列表打碎,让里面的3个元组流出来,进而形成了3个序列构建zip函数
***zip函数可以用于转秩
list(zip(*L)) #zip函数可用于转秩
sort和sorted区别:sort只针对于列表,也是在原来的基础上修改的,这是因为字符串和元组都不能改变元素顺序,且元组不能够直接修改元素;而sorted是可以针对序列(字符串,列表,元组)进行排序,且排序完后不影响原有的序列
ex:
L=[(‘a’, 3, 5), (‘b’, 6, 2), (‘c’, 1, 7)]
sorted(L,key=lambda x:x[1],reverse=True)

zip函数除了进行转秩,还可以用来将字典转换成列表形式
ex:
dic={“d”:“banana”,“a”:“apple”,“b”:“grape”,“c”:“orange”}
keys = dic.keys()
values = dic.values()
lst = list(zip(keys,values))

惰性序列的好处是可以节省内存,因为列表是很消耗内存的

局部变量不能修改全局变量,否则会报错
ex:
a=10
def ffff():
print(a)
a=4
print(a)
ffff()
如果要修改的话,可以使用global来将函数的内局部变量定义为全局变量
ex2:
a=10
def ffff():
global a
print(a)
a=4
print(a)

**注意:对于局部变量不能修改全局变量的话,如果全局变量是个容器的话,如列表,则局部变量是可以进行修改的,这是因为容器在内存中的id并没有发生变化
ex:
L=[1,2,3]
def ff():
print(L)
L.append(4)
print(L)
ff()

random.choice:从序列中获得一个随机元素

三元表达式:
[i if i%20 else -i for i in range(10) ]
i if i%2
0 else -i
如果if为真,则显示左边的i,如果if为假,显示else右边内容

列表生成器:列表生成器实际是循环和嵌套的简单写法,使得程序看起来更加简洁,最终以列表形式展现
ex:
[[l[i] for l in matrix] for i in range(4)]
[j for i in matrix for j in i]

enumerate()列举出括号里的元素

生成器:yield关键字,同时调用_next_()
装饰器:在要装饰的函数上面声明“@装饰器函数”名称
闭包:能够读取其他函数内部变量的函数,只有函数内部的子函数才能读取局部变量,所以闭包可以理解为定义在一个函数内部的函数
def 外部函数(外部参数):
def 内部函数():
return 外部参数+1
return 内部函数
闭包最重要的是执行完后,外部参数不会被释放

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值