Python for循环及基础用法详解


Posted in Python onNovember 08, 2019

Python 中的循环语句有 2 种,分别是 while 循环和 for 循环,前面章节已经对 while 做了详细的讲解,本节给大家介绍 for 循环,它常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。

for 循环的语法格式如下:

for 迭代变量 in 字符串|列表|元组|字典|集合:
代码块

格式中,迭代变量用于存放从序列类型变量中读取出来的元素,所以一般不会在循环中对迭代变量手动赋值;代码块指的是具有相同缩进格式的多行代码(和 while 一样),由于和循环结构联用,因此代码块又称为循环体。

for 循环语句的执行流程如图 1 所示。

Python for循环及基础用法详解

图 1 for 循环语句的执行流程图

例如:

name = '张三'
#变量name,逐个输出各个字符
for ch in name:
  print(ch)

运行结果为:


可以看到,使用 for 循环遍历 “张三” 字符串的过程中,迭代变量 ch 先后被赋值为‘张'和‘三',并代入循环体中运行,只不过例子中的循环体比较简单,只有一行输出代码。

for 进行数值循环

在使用 for 循环时,最基本的应用就是进行数值循环。比如说,想要实现从 1 到 100 的累加,可以执行如下代码:

print("计算 1+2+...+100 的结果为:")
#保存累加结果的变量
result = 0
#逐个获取从 1 到 100 这些值,并做累加操作
for i in range(101):
  result += i
print(result)

运行结果为:

计算 1+2+...+100 的结果为:
5050

上面代码中,使用了 range() 函数,此函数是 Python 内置的函数,用于生成一系列连续的整数,多用于 for 循环中。

range() 函数的语法格式如下:

range(start,end,step)

此函数中各参数的含义如下:

  1. start:用于指定计数的起始值,如果省略不写,则默认从 0 开始。
  2. end:用于指定计数的结束值(不包括此值),此参数不能省略。
  3. step:用于指定步长,即两个数之间的间隔,如果省略,则默认步长为 1。

总之,在使用 range() 函数时,如果只有一个参数,则表示指定的是 end;如果有两个参数,则表示指定的是 start 和 end。

大家也可以根据需要写代码测试一下。

例如:

print("输出10 以内的所有奇数:")
for i in range(1,10,2):
 print(i,end=' ')

运行结果为:

输出10 以内的所有奇数:
1 3 5 7 9

在 Python 2.x 中,除提供 range() 函数外,还提供了一个 xrange() 函数,它可以解决 range() 函数不经意间耗掉所有可用内存的问题。但在 Python 3.x 中,已经将 xrange() 更名为 range() 函数,并删除了老的 xrange() 函数。

for 循环遍历列表和元组

在使用 for 循环遍历列表和元组时,列表或元组有几个元素,for 循环的循环体就执行几次,针对每个元素执行一次,迭代变量会依次被赋值为元素的值。

如下代码使用 for 循环遍历元组:

a_tuple = ('crazyit', 'fkit', 'Charlie')
for ele in a_tuple:
  print('当前元素是:', ele)

运行结果为:

当前元素是: crazyit
当前元素是: fkit
当前元素是: Charlie

当然,也可按上面方法来遍历列表。例如,下面程序要计算列表中所有数值元素的总和、平均值:

src_list = [12, 45, 3.4, 13, 'a', 4, 56, 'crazyit', 109.5]
my_sum = 0
my_count = 0
for ele in src_list:
  # 如果该元素是整数或浮点数
  if isinstance(ele, int) or isinstance(ele, float):
    print(ele)
    # 累加该元素
    my_sum += ele
    # 数值元素的个数加1
    my_count += 1
print('总和:', my_sum)
print('平均数:', my_sum / my_count)

运行结果为:

12
45
3.4
13
4
56
109.5
总和: 242.9
平均数: 34.7

上面程序使用 for 循环遍历列表的元素,并对几何元素进行判断:只有当列表元素是数值(int、float)时,程序才会累加它们,这样就可以计算出列表中数值元素的总和。

不仅如此,程序中还使用了 Python 的 isinstance() 函数,该函数用于判断某个变量是否为指定类型的实例,其中前一个参数是要判断的变量,后一个参数是类型。我们可以在 Python 的交互式解释器中测试该函数的功能,例如如下运行过程:

>>> isinstance(2,int)
True
>>> isinstance('a',int)
False
>>> isinstance('a',str)
True

从上面的运行过程可以看出,使用 isinstance() 函数判断变量是否为指定类型非常方便、有效。

如果需要,for 循环也可根据索引来遍历列表或元组,即只要让迭代变量取 0 到列表长度的区间,就可通过该迭代变量访问列表元素。例如如下程序:

a_list = [330, 1.4, 50, 'fkit', -3.5]
# 遍历0到len(a_list)的范围
for i in range(0, len(a_list)) :
  # 根据索引访问列表元素
  print("第%d个元素是 %s" % (i , a_list[i]))

运行结果为:

第0个元素是 330
第1个元素是 1.4
第2个元素是 50
第3个元素是 fkit
第4个元素是 -3.5

for 循环遍历字典

使用 for 循环遍历字典其实也是通过遍历普通列表来实现的。前面在介绍字典时己经提到,字典包含了如下三个方法:

  1. items():返回字典中所有 key-value 对的列表。
  2. keys():返回字典中所有 key 的列表。
  3. values():返回字典中所有 value 的列表。

因此,如果要遍历字典,完全可以先调用字典的上面三个方法之一来获取字典的所有 key-value 对、所有 key、所有 value,再进行遍历。如下程序示范了使用 for 循环来遍历字典:

my_dict = {'语文': 89, '数学': 92, '英语': 80}
# 通过items()方法遍历所有key-value对
# 由于items方法返回的列表元素是key-value对,因此要声明两个变量
for key, value in my_dict.items():
  print('key:', key)
  print('value:', value)
print('-------------')
# 通过keys()方法遍历所有key
for key in my_dict.keys():
  print('key:', key)
  # 在通过key获取value
  print('value:', my_dict[key])
print('-------------')
# 通过values()方法遍历所有value
for value in my_dict.values():
  print('value:', value)

运行结果为:

key: 语文
value: 89
key: 数学
value: 92
key: 英语
value: 80
-------------
key: 语文
value: 89
key: 数学
value: 92
key: 英语
value: 80
-------------
value: 89
value: 92
value: 80

上面程序通过三个 for 循环分别遍历了字典的所有 key-value 对、所有 key、所有 value。尤其是通过字典的 items() 遍历所有的 key-value 对时,由于 items() 方法返回的是字典中所有 key-value 对组成的列表,列表元素都是长度为 2 的元组,因此程序要声明两个变量来分别代表 key、value(这也是序列解包的应用)。

假如需要实现一个程序,用于统计列表中各元素出现的次数。由于我们并不清楚列表中包含多少个元素,因此考虑定义一个字典,以列表的元素为 key,该元素出现的次数为 value。程序如下:

src_list = [12, 45, 3.4, 12, 'fkit', 45, 3.4, 'fkit', 45, 3.4]
statistics = {}
for ele in src_list:
  # 如果字典中包含ele代表的key
  if ele in statistics:
    # 将ele元素代表出现次数加1
    statistics[ele] += 1
  # 如果字典中不包含ele代表的key,说明该元素还未出现过
  else:
    # 将ele元素代表出现次数设为1
    statistics[ele] = 1   
# 遍历dict,打印出各元素的出现次数
for ele, count in statistics.items():
  print("%s的出现次数为:%d" % (ele, count))

运行结果为:

12的出现次数为:2
45的出现次数为:3
3.4的出现次数为:3
fkit的出现次数为:2

python循环-for循环综合小案例

一、字符串的反转

# 翻转字符—将“我是个大好人!我爱我的家”反转“家的我爱我!人好大个是我”
yuanJu = "我是个大好人!我爱我的家"
result = ""
# 第一步,先拆字
for x in yuanJu:
# 用遍历出的结果与空字符串相加
  result = x + result
print(result)

二、打印 1—100之间的偶数

# 打印 1—100之间的偶数
# 首先创建一个1—100的集合,利用range函数,生成的半开半闭的区间,所以最后得+1。
num = range(1, 101)
for n in num:
  if n % 2 == 0:
    print(n)
else:
  print("以上数字为1-100之内的偶数")

因为上面的偶数需要包括100,所以range(1,101).

好了这篇关于python for循环的文章就介绍到这了,这也是三水点靠木小编迄今为止比较完整的介绍了,希望能帮助到大家。

Python 相关文章推荐
python基础教程之lambda表达式使用方法
Feb 12 Python
Python中的并发编程实例
Jul 07 Python
python进程类subprocess的一些操作方法例子
Nov 22 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
Python 实现Windows开机运行某软件的方法
Oct 14 Python
python实现扫描局域网指定网段ip的方法
Apr 16 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
Python3远程监控程序的实现方法
Jul 15 Python
在pycharm中显示python画的图方法
Aug 31 Python
python读取图像矩阵文件并转换为向量实例
Jun 18 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
python脚本定时发送邮件
Dec 22 Python
python常用排序算法的实现代码
Nov 08 #Python
python分布式编程实现过程解析
Nov 08 #Python
详解mac python+selenium+Chrome 简单案例
Nov 08 #Python
python manage.py runserver流程解析
Nov 08 #Python
详解python中docx库的安装过程
Nov 08 #Python
numpy.array 操作使用简单总结
Nov 08 #Python
如何在python中写hive脚本
Nov 08 #Python
You might like
如何利用php+mysql保存和输出文件
2006/10/09 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php车辆违章查询数据示例
2016/10/14 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
jQuery使用bind函数实现绑定多个事件的方法
2017/10/11 jQuery
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
遗传算法python版
2018/03/19 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
python同步两个文件夹下的内容
2019/08/29 Python
Python assert关键字原理及实例解析
2019/12/13 Python
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
外语专业毕业生个人的自荐信
2013/11/19 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
小学生安全责任书
2014/07/25 职场文书
端午节活动总结
2014/08/26 职场文书
个人典型事迹材料
2014/12/30 职场文书
婚庆答谢词
2015/01/04 职场文书
带你了解Java中的ForkJoin
2022/04/28 Java/Android