Python3:条件、循环、迭代、生成

条件语句

if 语句

if ...... :
    pass

if else语句

if ......:
    pass
else:
    pass

if嵌套

if ......:
    pass
elif ......:
    pass
elif ......:
    pass

循环语句

while循环

while ......:
    pass

for循环

for ......:
    pass

循环控制语句

  • break :终止循环并转移到循环之后的语句
  • continue:直接进入下一次迭代
  • pass:占位代码,用于架构,细节后期实现

迭代器和生成器

迭代器(Iterator)用以遍历集合的所有元素

主要实现方法是iter()next(),字符串、列表、元组可用于创建迭代器

import sys
mylist = [1,2,3,4]
it = iter(mylist)
while True:
    try:
        print(next(it))
    except StopIteration:
        sys.exit()

上述代码其实等效于一个for循环迭代

mylist = [1,2,3,4]
for it in mylist:
    print(it)

生成器(generator)

  • 将正常函数的return语句换成yield语句即构建了一个生成器
  • 如果函数包含至少一个yield语句(它可能包含其它yieldreturn语句),那么它将成为一个生成函数。
  • 区别在于,return语句完全终止函数,但yield语句会暂停函数保存其所有状态,并在以后的连续调用中继续执行(类似于线程挂起)

生成器函数与正常函数的差异

  • 生成器函数包含一个或多个yield语句
  • 当被调用时,它返回一个对象(迭代器),但不会立即开始执行
  • iter()next()之类的方法将自动实现,所以可以使用next()迭代项目
  • 局部变量及其状态在连续调用之间被记住
  • 最后,当函数终止时,StopIteration会在进一步调用时自动引发
def my_gen():
    n=1
    yield n
    n+=1
    yield n
    n+=1
    yield n

# >>>a=my_gen()
# >>>next(a)
# 1
# >>>next(a)
# 2
# >>>next(a)
# 3
# >>>next(a)
# Traceback .......
# ...
# StopIteration

具有循环的生成器

def all_even():
    n=0
    while True:
        yield n
        n+=2

#理论上可以生成所有的偶数

你可能感兴趣的:(Python3:条件、循环、迭代、生成)