1、推导式
推导式与匿名函数类似,都可以简化编程语言。
1.1 列表推导式
使用[]生成list
例:
# 整除3的数字列表
numbers1 = []
for x in range(10):
if x % 3 == 0:
numbers1.append(x)
print(numbers1)
# 使用推导实现
numbers = [x for x in range(10) if x % 3 == 0] #同样可以实现上述函数的功能
print(numbers)
输出结果:
[0, 3, 6, 9]
[0, 3, 6, 9]
使用()生成generator
将列表推导式中的[]换成()就可以得到生成器
例:
multiples = (i for i in range(30) if i % 3 is 0)
print(type(multiples))
输出结果:
<class 'generator'>
1.2 字典推导式
与列表推导式类似,以{}形式编写。
例:
mcase = {'a': 10, 'b': 34}
mcase_frequency = {v: k for k, v in mcase.items()}
print(mcase_frequency)
输出结果:
{10: 'a', 34: 'b'}
1.3 集合推导式
与字典推导式一样,都是用{},但是集合推导式不使用键值对形式。
例:
squared = {x**2 for x in [1, 1, 2]}
print(squared)
输出结果:
{1, 4}
2、迭代器
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
iter用来创建迭代器对象,next则是调用输出迭代器的下一个元素。
例:
list=[1,2,3,4]
it = iter(list) # 创建迭代器对象
print (next(it)) # 输出迭代器的下一个元素
print (next(it))
输出结果:
1
2
迭代器对象可以使用常规for语句进行遍历:
list=[1,2,3,4]
it = iter(list) # 创建迭代器对象
for x in it:
print (x, end=" ")
输出结果:
1 2 3 4
3、生成器
在python中使用yield代替return的函数被称为生成器。
例:
def test():
for i in range(5):
print('begin---')
yield i
print('end---')
t=test()
print(next(t))
输出结果:
begin---
0