标签:简单 进入 字典 lis raise ret 生成 有一个 优点
height=180
salary=3.2
name='nick'
hobby_list=['run','read']
bobby_tup=('run','read')
info_dict={'name':'nick','weight':140}
hobby_set={'read','run',}
文件f
总结:
height.__iter__
salary.__iter__
func.__iter__
name.__iter__()
hobby_list.__iter__()
hobby_set.__iter__()
hobby_tup.__iter__()
info_dict.__iter__()
f.__iter__()
总结:
迭代器对象:执行可迭代对象的__iter__方法,拿到的返回值就是迭代器对象。
可迭代对象: 拥有iter方法的对象就是可迭代对象,推导:可迭代对象不一定是迭代器对象
迭代器对象: 拥有iter方法和next方法的就是迭代器对象,推导: 迭代器对象一定是可迭代对象,又是迭代器对象
for循环原理
for循环称为迭代器循环,in后必须是可迭代的对象。
条件成立时的返回值if条件else条件不成立时的返回值。
dog_name='xiaogou'
if dog_name=='fenggou'
print('远离他')
else:
print('盘')
------------------------>>
print('远离他') if dog_name=='fenggou'else print('盘他')
lis=[]
for i in range(100):
lis.append(i)
print(lis)
lis = [i*2 for i in range(100)]
print(lis)
lis1 = [i * 2 if i > 50 else i for i in range(100)]
print(lis1)
dic=dict.fromkeys([1,2,3,4],2)
print(dic)
# {1: 2, 2: 2, 3: 2, 4: 2}
dic={i:i**2 for i in range(10)}
for i in dic.items():
print(i)
##(0, 0)
(1, 1)
(2, 4)
(3, 9)
(4, 16)
(5, 25)
(6, 36)
(7, 49)
(8, 64)
(9, 81)
拉链函数 zip()方法,通过解压缩函数生成一个字典。
res=zip('abcd',[1,2,3,4])
dic=dict()
for k,v in res
dic[k]=v
print(dic)
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
print({k:v for k,v in zip('abcd',[1,2,3,4])})
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
生成器提供了非常方便的自定义迭代器的途径。
def func():
pass
def func():
print('from 1')
yield
print('from 2')
yield
#func调用之后变成一个迭代器,yield默认返回none
g=func()
print(g.__next__())
print(g.__next__())
g.__next__()
for i in g:
print(i)
def func():
print('from 1')
yield 1,2
print('from 2')
yield['a',1,2],2
g=func()
for k,v in g:
print(k,v)
-------------->
from 1
1 2
from 2
['a', 1, 2] 2
#yield:接收值,但是不会结束函数,然后继续下一行代码,直到return
#return:返回值,直到结束函数,其他的特性和yield一摸一呀
range(1,10)
print([i for i in range(10)])
---------->
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(range(10).__iter__().next__())
---------->
0
def range(end,start=0,step=1):
end,start=start,end
count=start
while count<end:
yield count
count+=step
g=range(1,10)
def range(*args,**kwargs)
start=0
step=1
if len(args)==1:
end=args[0]
#arg=(10,)
elif len(args)==2:
#arg=(1,10)
start=arg[0]
end=args[1]
elif len(args)==3:
start=args[0]
end=args[1]
step=args[2]
else:
raise('传多值了')
count=start
while count<end
yield count
count+=step
print(list(range(2,10,3)))
------------>
[2,5,8]
tup=(i for i in range(10))
print(tup.__next__())
for i in tup
print(i)
lis=[i for i in range(10)]
print(lis)
总结:
yield:
yield和return:
def f2();
print('from 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:
print(age)
return 26
return guess_age(count)+2
res=guess_age(5)
print(res)
r()
递归必须要有两个明确的阶段:
递归的精髓在于通过不断地重复逼近一个最终的结果。
标签:简单 进入 字典 lis raise ret 生成 有一个 优点
原文地址:https://www.cnblogs.com/gongjingyun123--/p/10969901.html