函数迭代器 生成器 简单lambda

iter()函数用来生成迭代器

代码高亮

#迭代器测试

a_list = [1, 2, 3]
for i in iter(a_list):
    print(i)

for i in a_list:
    print(i)
range(start, stop[, step])

参数说明:

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

代码高亮

range(10)        # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(1, 11)     # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range(0, 30, 5)  # 步长为 5
[0, 5, 10, 15, 20, 25]
range(0, 10, 3)  # 步长为 3
[0, 3, 6, 9]
range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
range(0)
[]
range(1, 0)
[]

range的步长必须是整数,不能是小数

自定义range函数

代码高亮

# 自定义range函数
def frange(start, stop, step):
    x = start
    while x < stop:
        yield x
        x += step

for i in frange(1, 10 ,0.5):
    print(i)
yield

yeild是一个generator(生成器)。

yield是一个类似return的关键字,只不过,带有yield的函数,不再是一个普通的函数,而是一个生成器。在执行中,调用next()方法才开始真正执行(for循环自动调用next方法)。

yeild的作用就是把一个函数变成generator,带有yeild的函数不再是一个普通的函数,Python解释器会将其视为一个generator。
带有yeild的函数虽然在执行流程上看起来和普通函数一样,但实际上每执行到yeild的语句,函数就中断,停止执行,每次中断都会通过yeild返回一个当前的迭代值。下次执行的时候从yeild的下一句开始执行,而函数的本地变量看起来和上一次中断执行前是完全一致的,于是函数继续往下执行,直到再次遇到yeild。

lambda

###代码高亮

def add(x, y):
    return x+y
lambda x, y: x+y
print(add(3, 4))

lambda与def的区别:
1)def创建的方法是有名称的,而lambda没有。

2)lambda会返回一个函数对象,但这个对象不会赋给一个标识符,而def则会把函数对象赋值给一个变量(函数名)。

3)lambda只是一个表达式,而def则是一个语句。

4)lambda表达式” : “后面,只能有一个表达式,def则可以有多个。

5)像if或for或print等语句不能用于lambda中,def可以。

6)lambda一般用来定义简单的函数,而def可以定义复杂的函数。

7)lambda函数不能共享给别的程序调用,def可以。

lambda语法格式:

lambda 变量 : 要执行的语句

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值