Python3快速入门知识点:流程控制、迭代器、生成器
流程控制
if控制
if 表达式1: 语句 if 表达式2: 语句 elif 表达式3: 语句 else: 语句elif 表达式4: 语句else: 语句
1.每个条件后使用冒号:
,表示满足下一个条件。稍后要执行的指令块。 2、使用缩进来划分指令块。具有相同缩进数的语句一起构成一个语句块。 3.Python中没有switch case语句。
三元运算符:
<表达式1> if <条件> else <表达式2>
在编写条件语句时,应尽量避免使用嵌套语句。嵌套指令的可读性较差,并且可能会忽略功能。语句
for遍历
for <循环变量> in <循环对象>: <语句1>else: <语句2>
else中的语句2只有在循环正常结束时才会执行(遍历到的对象中的所有值都被遍历到)。
遍历字典时,可以使用items()
方法解释关键字和关联值:
knights = {gallahad: the pure, robin: the brave}for k, v in knights.items(): print(k, v)
遍历字符串时,可以使用解释索引位置及其值 函数 enumerate() 同时获取:
for i, v in enumerate([tic, tac, toe]): print(i, v)
要同时迭代两个或多个字符串,可以使用组合 zip()
:
questions = [name, quest, favorite color]answers = [lancelot, the holy grail, blue]for q, a in zip(questions, answers): print(What is your {0}? It is {1}..format(q, a))
要迭代一个倒序排列,首先指定序列,然后调用函数 reversed()
:
for i in reversed(range(1, 10, 2)): print(i)
要按顺序迭代序列,请使用函数 sorted()
返回一个排序后的数组,不改变原值:
basket = [apple, orange, apple, pear, orange, banana]for f in sorted(set(basket)): print(f)
while循环
while<条件>: <语句1>else: <语句2>
break, continue, pass
break语句用于while和for循环中。 Break语句用于结束循环语句。也就是说,如果不存在 False 条件或序列尚未完全迭代,则循环条件也会停止。执行循环语句。 continue 语句用在 while 和 for 循环中。 continue语句用于告诉Python跳过当前循环的剩余语句,然后继续下一轮循环。 continue 语句跳出本次循环,break 语句跳出整个循环。
pass 是一个空语句,用于保持程序结构的完整性。 pass 不执行任何操作,通常用作占位符。
迭代器
迭代器是一个可以记住遍历位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有元素都可访问。迭代器只能向前移动,不能向后移动。
迭代器有两个基本方法:
iter()
和next()
。字符串、列表或元组对象可用于创建迭代器。
迭代器可以使用for循环进行迭代:
li = [1, 2, 3]it = iter(li)for val in it: print(val)
迭代器还可以使用next()函数来访问下一个元素值:
import sysli = [1,2,3,4]it = iter(li)while True: try: print (next(it)) except StopIteration: sys.exit()
生成器
在Python中,使用yield的函数称为生成器。
与常规函数不同,生成器是一个返回迭代器的函数,只能用于迭代操作。更容易理解生成器是迭代器。
调用生成器运行时,函数每次遇到yield都会暂停并保存当前所有运行信息,返回yield的值以及下次使用next()方法时,从当前位置继续工作被执行。
调用生成器函数并返回迭代器对象。
import sysdef fibonacci(n): # 生成器函数 - 斐波那契 a, b, counter = 0, 1, 0 while True: if (counter > n): return yield a a, b = b, a + b counter += 1f = fibonacci(10) # f 是一个迭代器,由生成器返回生成while True: try: print(next(f)) except StopIteration: sys.exit()
完...未完待续
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。