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 变量 : 要执行的语句