【python系统学习08】for循环知识点合集
for循环
目录:
for简介代码格式语法格式可被迭代的数据类型列表字典字符串不可被迭代的数据类型整数浮点值布尔值空值整数转化为范围后可被迭代range(y)range(x, y)range(x, y, i)Peace && Love迭代列表时获取索引continue 跳过本次循环break 跳出循环思考题创建一个从1到100的整数列表九九乘法表
for简介
【循环】:就是依照某些我们编写的特定规则,重复的做一件事。
当你需要重复的“搬砖”的时候,可以用for循环进行遍历,让机器循环的帮你去“搬砖”,彻底解放我们的双手。
【遍历】:所谓遍历,就是一遍一遍的经历。放到程序中,就是让程序一遍又一遍的经历重跑同一段代码程序的场景。和循环一个意思。
代码格式
nameList = ['小石头', 'xing.org1^', '郭菊锋']
for name in nameList:
print(name) # 3次循环依次打印出'小石头', 'xing.org1^', '郭菊锋'
else:
print('else情况') # else每次都会经过,当for循环执行完毕后执行else的代码块
print('===for循环完毕===')
print(name) # 郭菊锋
以上代码中,我们定义了一个列表数据nameList,并且使用for循环,依次遍历将列表中的每一项都迭代出来。
每次循环时,我们定义的变量name就会被重新赋值为nameList的对应元素,第1次循环name被赋值为第一个元素、第2次循环name又被赋值成第二个元素。以此类推,直到nameList被循环完成或者出现跳出循环的指令(下表)后就会停止。
而停止循环后,变量name就是最后一个被赋值的元素,这里为郭菊锋
。
观察上述代码,for循环的语法格式也有一定的规律。
语法格式
for 元素变量 in 迭代对象:
【for子句】在代码块中,位于【缩进】后边。for子句里的内容会被循环执行。
else:
else里边的内容都会被执行。在for循环完毕之后执行。
可被迭代的数据类型
有哪些数据类型可以被for循环遍历呢?
结论:列表、字典、字符串。用例子说明:
列表
for循环遍历列表数据,可以依次打印出列表中的每一项。
打印循环的次数取决于列表中元素的个数。也就是列表的长度。
nameList = ['小石头', 'xing.org1^', '郭菊锋']
for name in nameList:
print(name) # 3次循环依次打印出'小石头', 'xing.org1^', '郭菊锋'
字典
for循环遍历字典数据,可以依次打印出字典中的每一个键(key)名。
我们可以在利用字典名[key]
的方式,获取key所对应的值。
打印循环的次数取决于字典中键名key的个数。
dictName = {'name': '小石头', 'nameEn': 'xing.org1^'}
for name in dictName:
print(name) # 2次循环依次打印出'name', 'nameEn'
print(dictName[name]) # 2次循环依次打印出'小石头', 'xing.org1^'
字符串
字符串也可以被for循环遍历,打印的将是每一个字符。
打印循环的次数取决于字符串的字符个数。
strName = 'xing.org1^'
for s in strName:
print(s)
# 循环依次打印结果如下:
# x
# i
# n
# g
# .
# o
# r
# g
# 1
# ^
不可被迭代的数据类型
整数、浮点数皆不可被迭代,如果强行遍历会发生错误:
整数
整数对象不是可迭代的:
numberValue = 2020
for num in numberValue: # TypeError: 'int' object is not iterable
print(num)
浮点值
浮点数对象不是可迭代的:
floatValue = 1.23
for num in floatValue: # TypeError: 'float' object is not iterable
print(num)
布尔值
布尔对象不可迭代:
boolVal = True
for b in boolVal: # TypeError: 'bool' object is not iterable
print(b)
空值
空值对象不可被迭代:
noneVal = None
for n in noneVal: # TypeError: 'NoneType' object is not iterable
print(n)
整数转化为范围后可被迭代
虽然直接for循环整数,会发生错误。
但是如果我们利用range
函数,将整数转化为一个数字范围,再去进行for遍历,就可以了。
range(y)
numValue = 5
for index in range(numValue):
print('5的迭代:', index)
# 五次循环打印结果如下
# 5的迭代: 0
# 5的迭代: 1
# 5的迭代: 2
# 5的迭代: 3
# 5的迭代: 4
观察可知,range范围迭代时,从“0”开始,且不包含“5”。
range(x, y)
从上边例子中可以看出来,若x不填则会默认从0开始。
如果不想从0开始呢?我们可以指定从几开始。代码上可以这么写:
rangeValue1 = 5
for index in range(1, rangeValue1): # 明确指定从1开始
print('range:', index)
# 循环打印结果如下
# range: 1
# range: 2
# range: 3
# range: 4
可以看到另一个规律,在range括号里,逗号前边的数字被迭代时是包含的,右边的不包含。即取逗号左边而不取右边的数字。
所以上例中,你如果想打印出“5”,那么括号最右边的数字你应该至少填写的比5大1。
range(x, y, i)
x和y,跟上边例子一致。均是从x开始,到y但是不包括y的迭代。而i是interval的缩写。表示间隔。既从x开始循环后,下一次的循环与上一次循环间隔多少。
文字空洞,代码奉上:
for index in range(0,10,3):
print('interval:', index)
# 循环打印结果如下:
# interval: 0
# interval: 3
# interval: 6
# interval: 9
从代码和打印结果观察得知,依旧是从0开始循环打印。不过0打印完了以后,1、2不打印。从3开始又有打印。依次规律类推…
Peace && Love
最后,尝尝人类复读机的力量吧
rangeValue2 = 5
for index in range(rangeValue2):
print('''
病毒消失,病人痊愈。武汉加油,天佑中华!
''')
# 病毒消失,病人痊愈。武汉加油,天佑中华!
# 病毒消失,病人痊愈。武汉加油,天佑中华!
# 病毒消失,病人痊愈。武汉加油,天佑中华!
# 病毒消失,病人痊愈。武汉加油,天佑中华!
# 病毒消失,病人痊愈。武汉加油,天佑中华!
# 病毒消失,病人痊愈。武汉加油,天佑中华!
迭代列表时获取索引
我们通过上边迭代列表和字典的代码中可以看出来,for后边的变量在迭代列表的时候是列表内的元素、迭代字典的时候则是字典里边的键名。
那么如果我想迭代字典时,有个变量存放列表中各项所对应的偏移量(索引)呢?
通过range函数的搭配,我们不仅可以迭代整数,还能迭代列表的索引。
于是我就试了下边的写法,但是他报错了。
# 迭代时传两个参数会报错:
nameList = ['小石头', 'xing.org1^', '郭菊锋']
for name,index in nameList: # ValueError: too many values to unpack (expected 2)
print(index)
错误内容ValueError: too many values to unpack (expected 2)
。表示了这里不应该有两个参数。
那么我们想用索引来携带列表时该怎么写呢?
一开始我给自己写了一个bug:
nameList = ['小石头', 'xing.org1^', '郭菊锋']
for index in range(nameList): # TypeError: 'list' object cannot be interpreted as an integer
print(index)
range内部只能接受整数。而列表转化不成整数,出点类型错误。
改正后,写法如下:
nameList = ['小石头', 'xing.org1^', '郭菊锋']
for index in range(len(nameList)):
print(index) # 三次循环分别打印0、1、2
思路是:先用len获取列表的长度,然后将计算的长度这个数字,放到range内部。
continue 跳过本次循环
continue跳过本次循环,for循环跳过后继续执行下一次循环。
for i in range(5):
if(i == 3):
continue
else:
print('continue跳过循环', i)
else:
print('有continue的for循环的else')
# 打印结果如下:
# continue跳过循环 0
# continue跳过循环 1
# continue跳过循环 2
# continue跳过循环 4
# 有continue的for循环的else
可以看打印结果得知,在满足i==3的条件之后,直接跳出了当次的循环没有打印3这个数字。而是进入到下次循环,打印出4后,循环完毕。
然后执行了for后边的else语句。
break 跳出循环
break跳出循环,for循环不管是否完成将直接结束。甚至for后边的else都不会再执行。
for i in range(5):
if(i == 3):
break
else:
print('break跳过循环', i)
else:
print('有break的for循环的else')
# 打印结果如下:
# break跳过循环 0
# break跳过循环 1
# break跳过循环 2
可以看打印结果得知,在满足i==3的条件之后,直接跳出了循环。
for循环后边的else都没执行。所以只打印了0、1、2。
思考题
创建一个从1到100的整数列表
用for循环打印1-100
九九乘法表
用for循环打印一个九九乘法表。就是小学时候我们铅笔盒盖子内部上印刷的那种,表格形式的。
【python系统学习08】for循环知识点合集的更多相关文章
- 【python系统学习11】循环语句里的F4
循环语句里的F4 深入了解下四个新语句,分别是:continue.break.pass.else以及他们搭配for.while循环等语句时,所产生的化学反应. else 由于continue.brea ...
- 转载请注明:Windows 系统必备好用软件&工具合集跟推荐 | 老D博客
Windows 系统必备好用软件&工具合集跟推荐 97 63,371 A+ 所属分类:工具软件 一.浏览器 二.下载软件 三.播放软件 五.电子邮件客户端 六.图片/照片 浏览查看工具 七.文 ...
- 【Python系统学习】基础篇
这次真的是最后一次了!第三次滚Python的基础.走了太多弯路.认真一点!菜鸟! 教程 转义字符 \ 可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\ ...
- Python快速学习10: 循环的对象及设计 (生活的规律)
前言 系列文章:[传送门] 生活逐渐规律,按时睡觉.今天写博客,明天补时间看会书.慢慢的时间很珍惜 我很喜欢! 时钟就像个循环体,我们将它融入生活. 正文 循环对象的并不是随着Python的诞生就存在 ...
- 【Python系统学习02】数据类型与类型转换
一.数据类型 字符串 整数 浮点数 [补充中...] 1.字符串 str 字符串:英文string,简写str. name = '小石头:' print(name,'2019', '12', '24' ...
- win10 LTSC系统 安装应用商店和纸牌合集,解决从应用商店安装Solitaire Collection纸牌打开空白的问题
家里台式机换了win10系统,想给老妈玩那个纸牌游戏(我也超喜欢的!. 发现这个系统没有自带纸牌游戏Microsoft Solitaire Collection, 过分的是,连应用商店都没有...呵呵 ...
- 关于Ubuntu系统忘记密码的解决方法合集
昨天有台机器的Ubuntu系统密码出了问题,一直提示错误.由于里面的数据比较重要,不建议重装系统,所以百度了一会,最终解决了忘记密码问题.整理了一个大合集分享出来. 第一种:参考教程如下 ...
- Python新手学习基础之循环结构练习
有几个元音字母? 有一个字符串"I learn Python from maya",我们想要查找出它里面的元音字母(aeiou)(其实是找出这几个小写字母),并统计出其元音字符的个 ...
- Python新手学习基础之循环结构——For语句
for语句 在Python里,循环语句除了while语句,还有for语句. 通常我们用for循环来遍历(按约定的顺序,对每个点进行访问,且只做一次访问)有序列的内容,比如列表和字符串(列表内容我们会在 ...
随机推荐
- linux 禁止单个中断
有时(但是很少!)一个驱动需要禁止一个特定中断线的中断递交. 内核提供了 3 个函数为 此目的, 所有都声明在 <asm/irq.h>. 这些函数是内核 API 的一部分, 因此我们描述它 ...
- Linux 内核子系统
一个子系统是作为一个整体对内核一个高级部分的代表. 子系统常常(但是不是一直)出现 在 sysfs 层次的顶级. 一些内核中的例子子系统包括 block_subsys(/sys/block, 给块 设 ...
- 小心Powershell的位数
我们都知道64位的 Windows 中有两个Powershell,32位的 Windows Powershell(x86)和64位的 Windows Powershell.(当然,32位的Window ...
- Sybase commands
(1)update table statistics $table name if we change index info for a table ,such as create or drop i ...
- 定位、识别;目标检测,FasterRCNN
定位: 针对分类利用softmax损失函数,针对定位利用L2损失函数(或L1.回归损失等) 人关节点检测 针对连续变量和离散变量需要采用不同种类的损失函数. 识别: 解决方案: 1.利用滑动窗口,框的 ...
- salesforce零基础学习(九十五)lightning out
随着salesforce对lightning的推进,越来越多的项目基于lightning开发,导致很多小伙伴可能都并不了解classic或者认为不需要用到classic直接就开始了lightning的 ...
- 如何使用JMX来管理程序?
什么是JMX JMX,全称Java Management Extensions,用于我们管理和监控java应用程序.JMX有以下用途: 监控应用程序的运行状态和相关统计信息. 修改应用程序的配置(无需 ...
- 利用Python实现高度定制专属RSS
前言 本文转载自个人博客网站,欢迎来访订阅.本篇属于定制RSS系列终极一弹,是三种方式中自由度最高.定制化最强的,也需要一定的编程能力.附上前两篇链接:1.利用Feed43为网站自制RSS源:2.如何 ...
- ArrayList中删除null元素效率比较
package test; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; i ...
- $bzoj2560$ 串珠子 容斥+$dp$
正解:容斥+$dp$ 解题报告: 传送门$QwQ$ $umm$虽然题目蛮简练的了但还是有点难理解,,,我再抽象一点儿,就说有$n$个点,点$i$和点$j$之间有$a_{i,j}$条无向边可以连,问有多 ...