一、生成式
- 许多大神基本一行代码就能解决复杂的算法问题,让人叹为观止,其实这就是生成式。
- 列表生成式就是一个用来生成列表的特定语法形式的表达式。是Python提供的一种生成列表的简洁形式, 可快速生成一个新的list。
列表生成式
举例:
随机生成100个随机数,并将数据导入列表当中
第二种方式就是用我们的列表生成式直接写出的,简便很多
import string
import random
codes = []
for i in range(100):
code = "".join(random.sample(string.ascii_letters,4))
codes.append(code)
print(codes)
#################
codes2 = ["".join(random.sample(string.ascii_letters,4))for i in range(100)]
print(codes2)
num = []
for i in range(1,101):
if i % 3 == 0:
num.append(i)
print(num)
num2 = [i for i in range(1,101) if i % 3 == 0]
print(num2)
集合生成式
result = {i**2 for i in range(10)}
print(result)
字典生成式
result2 = {i:i**2 for i in range(10)}
print(result2)
二、生成器
创建生成器
第一种方法: 列表生成式的改写。 []改成()
第二种方法: yield关键字。
def login():
print('step 1')
yield 1
print('step 2')
yield 2
print('step 3')
yield 3
g = login()
print(next(g))
print(next(g))
生成器的特点是什么?
python中return关键字和yield关键字的区别?
- return:在程序函数中返回某个值,返回之后函数不在继续执行,彻底结束。
- yield: 带有yield的函数是一个迭代器,函数返回某个值时,会停留在某个位置,返回函数值后,会在前面停留的位置继续执行,直到程序结束
三、生成器、迭代器与可迭代对象区别
迭代是访问容器元素的一种方式。迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。
可迭代对象:可以直接作用于for循环的对象(如何判断是否可以迭代?)
- 一类是集合数据类型,如list, tuple,dict, set,str等;
- 一类是generator,包括生成器和带yield的generator function。