6.1 for循环
配套的 Python 教学视频
6.1.1 For-Each 语句
在前面 我们就已经学习过 For-Each 语句了,学过其它 编程语言的 可能孩子啊 期待 for 的 正常语句 形式。但 很遗憾的是 我们还是要先讲 For-Each 语句。
==因为呀,其实 Python 的 正常 for 循环 是利用 enumerate() 和 配合 range(start,end,step) 来进行 正常 循环的。所以 其实还是在 For-Each 语句中 进行。 ==
那么 我们 今天 又来说 这个 For 语句,又要说 一些其它的什么东西呢?
答:break 终止循环
continue 回到循环起点
for……else:正常结束循环后 必须要执行的 代码段
我们今天 就要讲 这三个 点,在 For-Each 语句中的 重要应用
①比如说 我们在循环的时候 一旦碰到了一些特殊的元素,我们就需要退出这个循环,直接判断 再循环下去 就没意义了,那么就需要用到 break 强制退出!
假设 4 是一个 不吉利的数字,当我们的序列中 存在 4 的时候,我们依次遍历,碰到它 就会 结束循环,因为我们 被一股神秘的力量阻止了。
a = [1,2,3,4,5,6]
for x in a:
if(x == 4):
break
print(x)
③continue 直接回到循环的首部,再次进行下个循环
虽然 4 是个不吉利的数字,但是 我们 克服了它给我们的神秘力量,我们还要 继续 往下 遍历 出所有的数字,这个时候我们 就需要跳过当前的循环,直接来到 下一个循环。
for x in a:
if(x == 4):
continue
print(x)
③有些时候 我们 的循环里面 在不断的 做判断,一旦出现 不符合我们条件的 元素,那么 我们就会 认为 该序列里面的数据 不符合我们的要求了。这样我们 就会 直接退出 break。因为 继续 循环下去 就没意思了。那么 此时此刻 我们就不会 提示 它符合条件。
a = [1,2,3,4,5,6]
for x in a:
if(x == 4):
break
else:print("没有4,符合条件!")
a = [1,2,3,5,6]
for x in a:
if(x == 4):
break
else:print("没有4,符合条件!")
这个 else: 的意思就是 如果全部正常的 循环完了,我们 可能会 做一些事情,为了 方便的 实现 这样的操作,Python 就提供给我们 这样的 for…else 结构。
6.1.2 公共操作
① 运算符
② 公共方法
③ 索引化 for 循环
for 下标,数据 in enumerate(列表,start=0):
print(f"下标:{下标},数据:{数据}")
enumerate(列表,start=0)
这个start 参数 意思是说 我们 初始下标 是什么。默认的话 是 0.
那么 我们知道了 下标,其实 就更加的 灵活操作了。而并非光停留在遍历操作上。比如说 我们要去 给每个 元素 都 + 1。
for i,x in enumerate(a):
print(f"下标:{i},数据:{x}")
a[i]+=1
print(a)
有些时候 我们并不 需要 全部遍历操作,而是 在一个给定的范围 内 进行 操作。这个时候 我们就需要 用到 range() 方法。
for 记录 in range(2,4,1)
意思是 我们 从2 开始 步长为 1,一直走到4.也就是总共 循环了 两次,走到 4 的时候 就停止了。而前面的那个 记录变量,是为了 记录 现在 我们 走到哪个数字了。这个 可能我们会用到。
range(开始范围,终止范围,步长)
比如说 我们只 对 下标2开始,到下标4,不包括4,这个 范围内 进行操作。
for 记录 in range(2,4,1):
print(a[记录])
通过这个 想法,我们还可以 用 range() 去创建 一些序列。
b = []
for i in range(1,11,1):
b.append(i)
print(b)
要记住,range 的中文意思 就是 范围。不要理解为 其它的意思,只是我们可以 通过 这样的 范围 来做 一些神奇的事。
它并不是 像孙兴华 老师说的 用法那么固定。
6.1.3 推导式
range 配合 一些序列类型,是可以用 推导式 方式 直接进行 赋值的。
比如说 直接赋值 从 1 到 11 这个范围内 所有的数字。
列表 = [i for i in range(1,11)]
而这样的 书写格式,我们称为 推导式。
比如说 直接赋值 从 0 到 11 这个范围内 偶数数字。
列表 = [i for i in range(0,11,2)]
还可以在 推导式 里 加入 条件语句
列表 = [i for i in range(1,11,1) if i % 2 == 0]
print(列表)
比如 我们 在 任意的 范围内 选出 能被 2 整除的 数,也就是偶数,就需要 里面 写一个 if i % 2 == 0
字典也有推导式,比如说 两个列表,它们要合并为一个 字典,其实最快的 方式 是利用 推导式 一步完成。
A = ['华为','小米','苹果','三星']
B = [6988,1998,5888,7888]
字典 = {A[i]:B[i] for i in range(len(A))}
实际上 我们能看出来,无非 就是在 用range 自己本身的 特性,进行一个 下标取数据的操作而已。
这个地方其实还有个 特别的情况 就是 两个列表 如果不一样长,那么我们 一一对应的形成字典的话,后面 那个len() 的是短的那个列表,还是 长的那个列表呢? 答 : 短的那个列表。因为 如果你要 len 长的那个列表的话,短的那个列表是 没有那么大的 下标的,所以会报 下标溢出的错误。
再举个例子:
删除某个内容 形成新的字典
字典 = {i:j for i,j in 字典.items() if i != "苹果"}
print(字典)
集合的 推导式
集合 = {2,2,8}
集合 = {i ** 2 for i in 集合}
print(集合)