python迭代器
1、迭代器
for 迭代变量 in 可迭代对象
每一次循环都会自动让“迭代变量”指向“下一个元素”
li = [1, 2, 3, 4]
a = iter(li) #迭代器
print(next(a))
print(next(a))
print(next(a))
print(next(a))
1
2
3
4
li = [1, 2, 3, 4]
a = iter(li) #迭代器
try:
while True:
print(next(a))
except StopIteration:
pass
2、生成器
01、类似于函数的逻辑
02、支持显式的暂停于恢复
03、隐式的支持迭代协议
# 跟函数的逻辑很像
# 显性的暂停与恢复
# 隐姓的支持迭代协议
def f1(): # 函数,生成器,next
print('123')
print('123')
print('123')
yield 'aaa'#暂停执行
print('456')
f = f1() #生成器对象
print(next(f)) #用next恢复执行
123
123
123
aaa
yield 负责暂停
next 负责恢复
生成器的优点节省内存
def f1(num):
i = 0
while i < num:
yield i
i += 1
a = f1(5) # 用多少,拿多少
for i in a:
print(i)
3、导入模块
01模块导入都是在py文件的开头
import time as t #通常会用来模块名字很长的情况 重命名
t.sleep(5)
from os import path #部分导入
path.join()
import sys
print(sys.path) #用于存放导入路径的列表类似于环境变量中的PATH
print(sys.argv) #查看当前文件路径
4、推导表达式,快速生成一个列表
li = [i for i in range(15) if i >6]
print(li)
[7, 8, 9, 10, 11, 12, 13, 14]
li = [x+y for x in range(5) for y in range(5)]
print(li)
[0, 1, 2, 3, 4, 1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8]