迭代器
迭代器:不是函数,只是一个称呼而已
python中一切皆对象(数据类型)
可迭代对象,含有._ _ iter _. _方法的数据类型就叫做可迭代对象,
除了数字类型,所有数据类型都是可迭代对象。
使用--iter--之后变成迭代器
迭代器对象:含有——iter——和——next——方法的对象就是迭代器对象。
只有文件是迭代器对象
迭代器使用--iter--依然是迭代器
fw.--iter--()
fw.--next--()
作用:提供了 不依赖索引取值的手段
for循环原理(for循环本质就是一个while循环,只不过是一个一定可控的while循环)
三元表达式
if x > y :
print(x)
else:
print(y)
# 三元表达式
print(x) if x > y else print(y) # 仅作了解
条件走这里 if 条件 else 条件不成立走这里
列表推导式
lt = []
for i in range(10):
lt.append(i)
print(lt)
lt = [i for i in range(10)]
print(lt)
字典生成式
dic = {}
for i in range(10):
dic[i] = i
print(dic)
dic = {i:i**2 for i in range(10)}# key:value
print(dic)
两个列表快速生成一个字典
lt1 = ['a','b','c']
lt2 = [1,2,3]
res = zip(lt1,lt2)
# for k,v in res
# print(k,v)
dic = {k:v**2 for k,v in res}
print(dic)
{'a':1,'b':4,'c':9}
生成器
generator 本质是一个迭代器 ---》生成器:本质就是迭代器,生成器就是一个自定义的迭代器
生成器:含有yield关键字的函数叫做生成器,不是函数
def g():
yield 3# 一个yiled想到与一个next;暂停函数
yield 4
g = g() #生成器
for i in g:
print(i)
3
4
g()得到一个生成器-》生成器本质是迭代器
yield的特性
- 暂停函数
- 通过next取值
return的特性
- 终止函数
- 通过调用函数拿到值
递归
传递;回归
递归:函数a内部直接调用函数a本身
def a():
x = 1
print(x)
a()
a()
每一次递归,都不会结束函数,并且每一次递归都会开辟内存空间,如果一直开辟内存就炸掉了,所以最多递归1000次
真正的递归必须得有 退出条件
count = 0
def a():
global count
count += 1
print(count)
if count == 5:
return
a()
a()