操作Python列表Ⅰ

前言

在看了上一篇列表简介之后,你应该对列表有了初步的了解,知道了怎么创建和操作列表元素。不知道你有没有想过,上篇文章的操作列表元素是基于“我们已经知道列表元素内容和列表元素数量很少”的前提下,如果现在有个列表,我们不知道它有多少个元素,或者列表中含有一百万个以上的元素我们怎么对其进行操作?

daizhu

在本文中,你将学习如何遍历整个列表,遍历列表就是循环操作列表中的每个元素,这在Python中只需要几行代码,非常的easy!


1. 遍历整个列表

事实上,我们经常需要循环列表并对其中每个元素执行相同的操作。

比如,我们有个魔术师名单,现在需要你讲其中每个魔术师的名字都打印出来。

名单如下:

magicians = ['Kelvin', 'Vicky', 'Howord']

你看到这个名单以后肯定觉得

so easy

于是你吭哧吭哧地写了起来,运行前面你学到的知识,你写出来的代码是这样的:

magicians = ['Kelvin', 'Vicky', 'Howord']
print(magicians[0])
print(magicians[1])
print(magicians[2])

运行这段代码,结果如图1-1:

1-1

图1-1

表面上看你得到了正确的结果,当然,实际上你得到的也是正确的结果。

但是我们说,这样写的代码并不好,为什么?因为它不够健壮、不够灵活。

现在如果我改需求(产品经理上身):魔术师名单上有100位魔术师,现在需要你把每个魔术师的名字打印出来,你就要写 print(magicians[0]) ~ print(magicians[99])100遍。

我要是再丧心病狂地让你在魔术师名字前加上 hello,你就要改100遍代码。

可能对有些耐心极好的人来说,100遍也可以接收。

那我列表如果是1000个人、10000个人、100000个人呢?还可能更多。相信就算是如来佛祖来了都受不了。

sxbk

扯了这么一大堆,是想说明一点:如果列表中元素执行相同的操作,用循环简直能让人增寿。

下面用 for 循环来打印魔术师名单中的所有名字:

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
    print(magician)

运行这段代码,结果图1-2和图1-1一样:

1-2

图1-2

结果是一样的,不一样的是:倘若将来列表中魔术师变成了一百万甚至一千万个,for循环的代码一点都不需要改变,是不是很棒?!haha~

如果有人再桑心病狂地让你在每个魔术师名字前加上 hello,你只需要把上面的第三行代码改成 print("Hello, " + magician) 就可以了,不管魔术师有多少个,只需要改一行。

好了,现在我来解释一下 for 循环代码:首先,我们定义了一个列表,这个在之前的文章讲过,不懂的可以看我之前的文章或者关注公众号 猿天罡 ;接下来,我们定义了一个 for循环,看第二行代码,这行代码让Python从列表 magicians 中取出一个名字,并将其存储在变量 magician中;最后我们让 Python 打印前面存储到变量 magician 中的名字。对于列表中的每个名字,Python都将重复执行第二行和第三行的代码。

2. 深入地研究循环

循环这种概念很重要,因为它是让计算机自动完成重复工作的常见方式之一。

让我们再把上面的 for 循环拿出来讲讲其中的语法和语义:

在前面的打印魔术师名单的简单循环中,Python首先读取其中的第一行代码:

for magician in magicians:

这行代码让 Python 获取列表 magicians 中的第一个值 Kelvin ,并将其存储到变量 magician 中。接下来, Python 读取下一行代码:

    print(magician)

它让 Python 打印 magician 的值——当然是 Kelvin

因为该列表还包含其他值, 循环没有执行完,所以 Python 返回到循环的第一行:

for magician in magicians:

Python 获取列表中下一个魔术师的名字 Vicky ,并将其存储到变量 magician 中,再执行下面这行代码:

    print(magician)

Python 再次打印变量 magician 中的值——此时是 Vicky 。接下来, Python 再次执行整个循环,对列表最后一个值—— Howord 进行处理。

至此,列表中没有其他的值了,因此 Python 接着执行下一行代码。

在举的栗子中,for 循环后面没有其他的代码,因此程序就此结束。

zhuyi

注意事项:

  • 使用循环时,对列表中的每一个元素,都将执行循环指定的步骤(如栗子里的,print(magician)),而不管列表包含多少个元素。如果列表包含一百万个元素,Python 就重复执行指定的步骤一百万次,且通常执行的速度非常快,不信你可以试试。
  • 编写 for 循环时,对于用于存储列表中每个值的临时变量(如栗子里的,magician),可随意取名。但我们建议取有意义的名称,别人看代码的时候好理解。

3. 在 for 循环中执行更多的操作

for 循环中,可对每个元素执行任何操作。

比如,我们有个魔术师列表,现在需要你对于每个魔术师打印一条信息,指出他们的表演很精彩:

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
    print(magician.title() + ", your trick is amazing!")

运行这段代码,结果如图3-1:

3-1

图3-1

相比于前一个示例,唯一不同的是对于每位魔术师,都打印了一条以其名字开头的消息。

for 循环中,想包含多少行代码都可以
在代码 for magician in magicians: 后面,每个缩进的代码行都是循环的一部分,并且对列表中的每个元素都执行一次。

因此,可对列表中每个值执行任意次数的操作。

举例说明,在上面示例的基础上,告诉每个魔术师,你期待他的下次表演:

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
    print(magician.title() + ", your trick is amazing!")
    print("I can't wait to see u next trick, " + magician.title() + "\n")

由于两条 print 语句都缩进了,因此它们将针对列表中每个元素都执行一次。

第二个 print 语句里的 \n 表示 换行

运行这段代码,结果如图3-2:

3-2

图3-2

实际上,在大多数时候,在 for 循环中一行代码解决不了问题,你会发现使用 for 循环对每个元素执行众多不同的操作很有用。

4. 在 for 循环结束后执行一些操作

for 循环结束后再怎么做?通常,你需要提供总结性输出或者接着执行程序必须完成的其他任务。

for 循环后面,没有缩进的代码都只执行一次,且不会重复执行。

比如,还是魔术师列表,向每位魔术师表示期待下次表演后,打印一条向全体魔术师致谢的消息,感谢他们的精彩演出:

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
    print(magician.title() + ", your trick is amazing!")
    print("I can't wait to see u next trick, " + magician.title() + "\n")
# 没有缩进,在循环结束后仅执行一次
print("Thank u, everyone, That was a great magic show!")

运行这段代码,结果如图4-1:

4-1

图4-1

从结果可以看出,由于第三个 print 语句没有缩进,因此只执行了一次。

结尾语

看到这里,你心里应该对遍历列表有了点数,作为初学者,先不要深究其原理,首先要做的是把这语法记住,然后写几个栗子,做到熟练运用,到了一定的地步,你会豁然开朗、融会贯通的。

如果你在学习过程中有任何疑问,可以关注文章下方↓↓↓的公众号及时与我联系,我们相互讨论,共同学习。

最后,祝你学有所成。

公众号-猿天罡

欢迎大家点赞、关注、收藏,我是Kelvin,我们下期再见,(ToT)/~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值