百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Python教程:for循环语句

itomcoil 2025-03-05 17:10 5 浏览

循环(loop)是生活中常见的现象,如每天的日升日落,斗转星移,都是循环,编程语言的出现就是为了解决现实中的问题,所以也少不了要循环。

for循环

在这里我用一个例子来具体解析一下for循环:

>>> name = 'rocky'
>>> for i in name:
...    print(i)
... 
r
o
c
k
y123456789复制代码类型:[python]

上述的例子就是实现的for循环,下面具体说一下它的运行过程:

name=‘rocky’是赋值语句,实现了变量和字符串之间的引用关系。

foriinname:for是发起循环的关键词;iinname是for循环的规则,字符串类型的对象是序列类型,能够从左到右一个个的按照索引读出每个字符,于是变量i就按照索引顺序,从第一个字符开始,依次获得该字符的引用。

当i=‘r’的时候,开始执行print(i),打印出字母r;然后循环第2次,让i=‘o',执行print(i),打印出字母o...如此循环下去,直到最后一个字符被打印出来,循环自动结束。

因为可以通过使用索引得到序列对象的某个元素,所以还可以通过下面的循环方式实现相同的效果:

>>> for i in range(len(name)):
...    print(name[i])
... 
r
o
c
k
y12345678复制代码类型:[python]

字符串,列表,元组,字典和集合等都可以用类似于上面的方式来循环。

>>> my_dict = dict([('name','rocky'),('like','python'),('age',23)])
>>> my_dict
{'age': 23, 'name': 'rocky', 'like': 'python'}
>>> for k in my_dict:
...    print(k)
... 
age
name
like123456789复制代码类型:[python]

这上面的循环,其实就是读取了字典的“键”,其实还有一个读取“键”的方式--dict.keys(),得到的字典的“键”组成的可迭代的对象。

>>> for k in my_dict.keys():
...    print(k)
... 
age
name
like123456复制代码类型:[python]

除了获得“键”值外,当然还有获取“值”啦,获取值用dict.values(),这个自己可以自行尝试一下。

还有一种方法可以以元组的方式返回键/值对,用的是dict.items()。

>>> for k in my_dict.items():
...    print(k)
... 
('age', 23)
('name', 'rocky')
('like', 'python')123456复制代码类型:[python]

这里有一点要说明的是,for循环应用的对象必须是可迭代的,如何判断一个对象是不是可迭代的,我们可以用collection这个标准库,具体使用如下:

>>> import collections
>>> isinstance(1,collections.Iterable)
False123复制代码类型:[python]

当然我说这个的意思并不是要你在每次使用for循环之前,非要判断某个对象是否可迭代,因为在上面我说过了,for循环可以用在字符串,列表,字典,元组和集合,你可以理直气壮的去用。

并行迭代

我提过多次“迭代”这个词,可以看出它在Python中占有重要的位置,其实“迭代”在Python中的表现就是for循环,从对象中获得一定数量的元素。在这里我们介绍一个方便的技巧,在使用迭代的时候,可以通过zip()函数对多个序列进行并行迭代。请看下面的例子:

>>> name = ['rocky','leey','zhangsan']
>>> language = ['python','c++','java','c#']
>>> names = ['rocky','leey','zhangsan']
>>> languages = ['python','c++','java','c#']
>>> for name,language in zip(names,languages):
...    print(name,' like ',language)
...
('rocky', ' like ', 'python')
('leey', ' like ', 'c++')
('zhangsan', ' like ', 'java')12345678910复制代码类型:[python]

zip()在最短的序列用完的时候就会停止,上面的例子中列表language是最长的,所以我们无法填充列表。除非人工扩展其它列表。

列表解析

我们先来看一个小问题,求1~9每个整数的平方,并且将结果放在列表中打印出来。

>>> power = []
>>> for i in range(1,10):
...     power.append(i*i)
...
>>> power
[1, 4, 9, 16, 25, 36, 49, 64, 81]123456复制代码类型:[python]

Python有一个非常强大的功能,就是列表解析,我们把上面的例子用列表解析写出来:

>>> power = [x ** 2 for x in range(1,10)]
>>> power
[1, 4, 9, 16, 25, 36, 49, 64, 81]123复制代码类型:[python]

看到上面的结果,我就问你怕不怕?惊不惊?这就是Python!追求简洁优雅的Python!上面我写的代码,都能用列表解析来重写,感兴趣的可以试试。

「链接」

相关推荐

使用opencv-Python进行图像锐化处理

使用OpenCV函数cv::filter2D执行一些拉普拉斯滤波以进行图像锐化使用OpenCV函数cv::distanceTransform以获得二值图像的派生(derived)表示,...

Python-OpenCV 7. 图像二值化

一、介绍图像二值化(ImageBinarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。在数字图像处理中,二值图像占有非常重要的地位,图...

OpenCV+Python裁剪图像

最近使用OpenCV+Python做了一个程序,功能是自动将照片中的文本部分找出来并裁剪/旋转保存为新的图片。这个功能用专业些的说法就是选择并提取感兴趣区域(ROI(RegionofInteres...

简单易懂的人脸识别!用PythonOpenCV实现(适合初...

前言:OpenCV是一个开源的计算机视觉和机器学习库。它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包。根据这个项目的关于页面,OpenCV已被广泛运用在各种项目上,从谷歌街景...

OpenCV行人检测应用方案--基于米尔全志T527开发板

本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV行人检测方案测试。摘自优秀创作者-小火苗一、软件环境安装1.在全志T527开发板安装OpenCVsudoap...

纯Python构建Web应用:Remi与 OpenCV 结合实现图像处理与展示

引言大家好,我是ICodeWR。在前几篇文章中,我们介绍了Remi的基础功能、多页面应用、动态更新、与Flask结合、与数据库结合、与Matplotlib结合以及与Pandas结合。...

【AI实战项目】基于OpenCV的“颜色识别项目”完整操作过程

OpenCV是一个广受欢迎且极为流行的计算机视觉库,它因其强大的功能、灵活性和开源特性而在开发者和研究者中备受青睐。学习OpenCV主要就是学习里面的计算机视觉算法。要学习这些算法的原理,知道它们适用...

Python自动化操控术:PyAutoGUI全场景实战指南

一、PyAutoGUI核心武器库解析1.1鼠标操控三剑客importpyautogui#绝对坐标移动(闪电速度)pyautogui.moveTo(100,200,duration=0....

从零开始学python爬虫(七):selenium自动化测试框架的介绍

本节主要学习selenium自动化测试框架在爬虫中的应用,selenium能够大幅降低爬虫的编写难度,但是也同样会大幅降低爬虫的爬取速度。在逼不得已的情况下我们可以使用selenium进行爬虫的编写。...

「干货分享」推荐5个可以让你事半功倍的Python自动化脚本

作者:俊欣来源:关于数据分析与可视化相信大家都听说自动化流水线、自动化办公等专业术语,在尽量少的人工干预的情况下,机器就可以根据固定的程序指令来完成任务,大大提高了工作效率。今天小编来为大家介绍几个P...

python+selenium+pytesseract识别图片验证码

一、selenium截取验证码#私信小编01即可获取大量Python学习资源#私信小编01即可获取大量Python学习资源#私信小编01即可获取大量Python学习资源importjso...

Python爬虫实战 | 利用多线程爬取 LOL 高清壁纸

一、背景介绍随着移动端的普及出现了很多的移动APP,应用软件也随之流行起来。最近看到英雄联盟的手游上线了,感觉还行,PC端英雄联盟可谓是爆火的游戏,不知道移动端的英雄联盟前途如何,那今天我们使用到...

一套真实的Python面试题,几十个题目汇总

1.(1)python下多线程的限制以及多进程中传递参数的方式python多线程有个全局解释器锁(globalinterpreterlock),这个锁的意思是任一时间只能有一个线程使用解释器,跟...

一文读透,Python暴力(BF)字符串匹配算法到 KMP 算法之间的变化

1.字符串匹配算法所谓字符串匹配算法,简单地说就是在一个目标字符串中查找是否存在另一个模式字符串。如在字符串"ABCDEFG"中查找是否存在“EF”字符串。可以把字符...

Python实现屏幕自动截图

教程目录需要实现的功能:自动屏幕截图具体需求:1.支持设置截图频率和截图文件存储路径2.在存储截图时判断与前一张截图的相似度,只有屏幕发生了显著的变化才存储截图所需技术(搜索关键词):1.屏幕截...