回顾一下py基础(lamada,迭代器,生成器)

lamada匿名函数:

python 使用lamada创建匿名函数
lamada拥有一个自己的命名空间,其只能访问自己的参数

a = lambda b,c:b+c
print(a(1,2))
a = lambda x,y:x*y+1
print(a(20,5))
传20,5 给a =》(20*5+1) = 101

lambda在调用的时候才对变量赋值,而不是定义的时候:

###lambda在运行的时候才调用其他变量,而不是定义的时候
num2 = 100
sum1 = lambda num1 : num1 + num2 ;
num2 = 10000
sum2 = lambda num1 : num1 + num2 ;
print( sum1( 1 ) )
print( sum2( 1 ) )
output :
10001
10001

直接通过lambda对(1, 2)排序

a = [(1, 2), (4, 1), (9, 10), (13, -3)]
a.sort(key=lambda x: x[1])
output:
[(13, -3), (4, 1), (1, 2), (9, 10)]

global a 表示从全局变量哪到函数当中,这样就可以对这个全局变量进行修改了。

input()输入可以带上字符:

 

info = input("请输入")
print(info)

常见对象自省:

dir,查看一个对象的所有属性和方法。	
type,返回一个对象的类型。
inspect,查看一个模块的信息(inspect.getsource(hello)/(hello.hi))#直接查看源码
inspect.getabsfile(hello)  # 查看一个模块的路径

python的迭代器与生成器,迭代器是python最强大的功能之一:

1、迭代器是访问集合的一种方式,迭代器是一个可以记住遍历的位置的对象。
2、迭代器从集合的第一个元素开始访问,直到所有元素被访问完,迭代器只能往前不会后退。
3、迭代器的两种基本用法:iter()、next()。
4、可迭代对象是指其在创建的时候设立了__iter__方法,这样才能用迭代器。

example:
list1 = [5,1,3,7]
it = iter(list1) #创建一个list的迭代器
for i in it:
	print(i)	#遍历这个迭代器
print(next(it)) #输出这个迭代器
print(next(it))
print(next(it))
print(next(it))

a = [2,3]
b = [3,4]
c = zip(a, b) #打成迭代器
a,b = c
print(a)
print(b)

创建迭代器:

# -*- coding = UTF-8 -*-
class Student:
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):  # python2.x中使用next,python3.x中使用__name__
        x = self.a
        self.a += 10
        return x

if __name__ == "__main__":
    a = Student()
    it = iter(a)
    times = 0  # 这里这个迭代器只走10遍
    for counter, i in enumerate(it):
        if (counter == 10):
            break
        print('遍历迭代器',i)
    print(next(it))
    print(next(it))
    print(next(it))

在python中,使用yield的被称作生成器:

生成器是一个返回迭代器的函数,在调用生成器运行的过程中。
每次遇到yield时函数会暂停并保存当前的运行信息,返回yield值,并且在下次执行这个迭代器的时候,
函数会从上次断掉的地方再次执行。
比如读数据读时候,数据很大,一次读完内存顶不住,用迭代器只取前面部分。
例子:
# -*- coding = UTF-8 -*-
def f():
    for i in range(0,10):
        yield i

res = f()
print(next(res)) #next 拿出第一个yield
print(next(res))
print(next(res))
print(next(res))
打印:
0、1、2、3
表示中断把结果输出,

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值