python 06.03
1.迭代器
python 中一切皆对象,但凡具有__ iter__方法的都是可迭代对象。
字符串/列表/元组/字典/集合/文件都是可迭代对象
__ next__其实是在遍历可迭代对象的元素,一旦遍历完报错
迭代器对象:同时具有__ iter__ & 可迭代对象__ next__方法的,才是迭代器对象。
可迭代对象: 拥有iter方法的对象就是可迭代对象,推导:可迭代对象不一定是迭代器对象
迭代器对象: 拥有iter方法和next方法的就是迭代器对象,推导: 迭代器对象一定是可迭代对象
文件即使可迭代对象,又是迭代器对象。
hobby_list=['run','read']
hobby_list_iter=hobby_list.__iter__()
while True:
try:
print (hobby_list_iter.__next__())
except:
break
2.三元表达式和列表推导式
不推荐使用
三元表达式
dog_name = 'xiaogou'
print('远离他') if dog_name == 'fenggou' else print('盘他')
列表推导式
lis=[i for i in range(10)]
print (lis)
lis1=[i*2 if i>5 else i for i in range(10)]
print (lis1)
lis1 = [i * 2 if i > 50 else i for i in range(100)]
print(lis1)
3.字典生成式
字典生成式
dic = {i:i**2 for i in range(10)}
print(dic)
拉链函数:
print({k:v for k,v in zip('abcd',[1,2,3,4])})
4.生成器
生成器:自定义的迭代器。
yield关键字:接收值,但是不会结束函数,而是继续运行下一行代码。
def fun():
print ('from f1')
yield [2,('name')]
print('from f2')
yield #返回值为 None
g=fun()
print(g.__iter__())
print (g.__next__())
print (g.__next__())
print(g.__next__())
yield :接收值,但是不会结束函数,然后继续执行下一行代码,直到return
return:返回值,直接结束函数,其它的特性和yield一模一样。
生成器表达式:
tup =(i for i in range(10))
print(tup.__next__())
lis=[i for i in range(10)]
print (lis)
5.递归
递归:函数调函数自己,类似于循环,但是这个循环必须得有结束的条件。
def f2():
print('from f2')
f2()
f2()
def guess_age(age,count):
age-=2
count-=1
if count==1:
print(age)
return
guess_age(age,count)
guess_age(38,5)
def guess_age(count):
count-=1
if count==1:
return 26
return guess_age(count)+2
res = guess_age(5)
print(res)

浙公网安备 33010602011771号