重学Python:零基础学习 Python 之初识迭代

本文介绍了Python中的迭代和循环概念,包括for和while循环,以及迭代器的基本使用,如列表遍历和文件迭代。作者强调实践的重要性,鼓励读者亲手尝试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在之前

大家好,这里是零基础学习 Python 系列,在这里我将从最基本的Python 写起,然后再慢慢涉及到高阶以及具体应用方面。我是完全自学的 Python,所以很是明白自学对于一个人的考验,所以在这里我会尽我最大的努力,把 Python 尽可能简单的表述清楚,让更多想要学习 Python 的朋友能够入门。同时写这个教程也算是对自己之前所学知识的一个巩固和提高,喜欢的朋友们可以点个关注,有问题欢迎随时和我交流。本文所有的代码编写均是Python3 版本。

在前面的文章中很多次的提到「迭代」 这个词,但是一直没有专门去写它,那么今天终于把它排上号了。当然了,迭代的这个话题要真的认真说起来的话会很多,本着循序渐进的原则,本篇文章先介绍比较初级的。

准备

在学习迭代之前,我们先来搞清楚下面这些名词:

1.循环(loop)

循环是指在满足条件的情况下,重复执行同一段代码,比如我们之前学过的 while 语句,忘记的请看这篇文章 — 零基础学习 Python 之 while 循环语句

2.迭代(Iterate)

迭代是指按照某种顺序逐个访问对象中的每一项,比如我们之前学过的 for 语句,忘记的请看这篇文章 — 零基础学习 Python 之 for 循环语句

3.递归(recursion)

递归是指一个函数不断调用自身的行为,比如我们很熟悉的斐波那契数列,如果不熟悉请自行搜索,很简单的。

4.遍历(traversal)

遍历是指按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次,其实 for 循环就是一种遍历,至于什么是树形结构,emmmm…不是我们在这里讨论的重点。

上述的四个词可能看起来有点高深莫测,其实我们在前面已经讲过关于循环的内容,你要是在网上搜过的话,你会发现网上充斥着大量的讲关于迭代,循环和递归区别的文章,这里我们暂时先不比较,我们在本篇文章中先搞明白 Python 中的迭代。

逐个访问

在 Python 中,如果你想要访问对象中的每个元素,可以像下面这样做,我在这以列表举例:

>>> my_list = ['r','o','c','k','y']
>>> for i in my_list:
...    print(i,end=' ')
...
r o c k y >>>

除了上述方法以外,还可以像下面这样:

>>> my_iter = iter(my_list)
>>> my_iter.__next__()
'r'
>>> my_iter.__next__()
'o'
>>> my_iter.__next__()
'c'
>>> my_iter.__next__()
'k'
>>> my_iter.__next__()
'y'
>>> my_iter.__next__()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
StopIteration

上面的 iter() 是一个内建函数,返回的就是一个迭代器对象,我在后面会专门再讲迭代器。

在 Python3 中,所有的迭代器对象都有 next() 方法,迭代器,当然是可迭代的,在上面的例子中,next() 就是要获得下一个对象,但是作为一个 “懒惰” 的程序员来说,上面的那种方法一个个的敲太麻烦了,所以就有了下面的方法:

>>> while True:
...    print(my_iter.__next__())
...
Traceback (most recent call last):
 File "<stdin>", line 2, in <module>
StopIteration

上面出现了错误,我们先不管,再来它一次:

>>> my_iter = iter(my_list)
>>> while True:
...    print(my_iter.__next__())
...
r
o
c
k
y
Traceback (most recent call last):
 File "<stdin>", line 2, in <module>
StopIteration

看了上面演示的例子可以发现,如果我们用 for 循环来写的话,当到了末尾的时候就自动结束了,但是用了 next() 的话,当完成最后一个的时候它不会自动结束,还会向下继续,但是后面已经没有元素了,所以就发出了一个 StopIteration 的信息,即停止迭代。

在这我们还要再关注一下迭代器对象的另一个特点,看上上个的那个例子就可以知道,对象 my_iter 被迭代结束后,即每个元素都读取了一遍之后,指针就移到了最后一个元素后面,如果想要再访问的话,指针并没有自动移动到初始位置,所以会报 StopIteration,如果想要重新开始的话,就需要重新载入迭代对象。

到现在,对迭代器暂且有上述的了解,迭代器其实还要更深层次的使用,但是有一个典型的例子 – 文件,这就是为什么我先把文件放在之前两天的文章来讲。

文件迭代器

现在有一个 “test.txt” 的文件,文件内容是:

My name is Rocky
I love Python
a,hhhhhhh

现在用迭代器来尝试操作这个文件,我们其实在之前两天讲述有关文件的知识的时候已经讲过了,就是用 readline() 一行一行的读,当然在实际操作中,我们是绝对不会这样做的,因为我们 “懒” 啊,一定要让它自动进行,比较常用的方法如下:

>>> f = open('test.txt')
>>> for line in f:
...    print(line,end=' ')
...
My name is Rocky
I love Python
a,hhhhhhh >>>

上面的过程当然用 next() 也能够读取:

>>> f = open('test.txt')
>>> f.__next__()
'My name is Rocky\n'
>>> f.__next__()
'I love Python\n'
>>> f.__next__()
'a,hhhhhhh'
>>> f.__next__()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
StopIteration

如果用 next() 就可以直接读取每行的内容,这就说明文件是天生可迭代的对象,不需要用 iter() 转换。再者,我们用 for 来实现迭代,本质上就是自动调用 next() ,只不过这个工作被 for 偷偷的做了,所以 for 是活雷锋无疑了。

写在之后

初识迭代就到这结束了,其实迭代器远不止上述的那么简单,以后我们还会不断的遇到,我会在后续为大家带来深入理解迭代的文章。

最后感谢你能看到这里,希望我写的东西能够让你有到收获,但是我还是希望我在文章里插入的代码,你们能自己动手试一下,都很简单。原创不易,每一个字,每一个标点都是自己手敲的,所以希望大家能多给点支持,该关注关注,该点赞点赞,该转发转发,有什么问题欢迎在后台联系我

---------------------------END---------------------------

题外话

感谢你能看到最后,给大家准备了一些福利!

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img

二、Python兼职渠道推荐*

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
在这里插入图片描述

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值