小鱼和魔法师来到了一个古老的废弃城堡。城堡的大门上挂着一个巨大的锁,锁的旁边有一排小抽屉,每个抽屉里都有一个物品。
魔法师对小鱼说:“这是一个古老的魔法大门,为了打开这扇门,我们需要正确地组合这些物品。在Python的魔法世界中,我们使用列表和元组来存储和组合多个物品。”
小鱼好奇地问:“列表和元组?”
魔法师继续说:“列表就像这些抽屉,你可以在其中放入任何物品,并随时添加或删除物品。元组就像一个封闭的魔法袋,一旦你放入物品,就不能再更改它。”
小鱼仔细地观察每个抽屉,然后说:“我看到每个抽屉上都有一个数字,这是不是它们的位置?”
魔法师点了点头:“正是如此,这是列表中的索引。每个物品在列表中都有一个唯一的位置,第一个物品从0开始计数。所以,第一个物品的索引是0,第二个物品的索引是1,以此类推。接下来让我详细给你讲讲。”
1.创建列表
列表与元组是一种能让你组织和管理数据的超能力。想象一下,你有三个神奇魔法球。在Python中,我们可以用方括号来创建一个列表,像这样:
这段代码告诉计算机:我有三个神奇魔法球,它们分别是红球、蓝球和绿球,请把它们列出来!。计算机听懂后,会把列表中的魔法球展示出来。
2.添加和删除列表元素
当你获得了新的宝物,如捡到一颗闪闪发光的宝石,可以使用append()方法把它添加到列表中:
上面的代码告诉计算机:我捡到了一颗闪亮宝石,加入到我的魔法球列表中!计算机就会把新的宝物添加到列表末尾,如图2-9所示。
图2-9
当你觉得某个宝物已经不再神奇,可使用remove()方法把它从列表中移除,如移除列表中的红球:
这段代码告诉计算机:把那个不神奇的红球从我的列表中去掉!计算机就会把红球从列表中删除。
3.访问列表元素
每个元素在列表中都有一个唯一的位置,这个位置被称为索引。索引从0开始计数,与字符串下标位置类似,例如:
● 要访问第一个元素(蓝球),你可以使用magic_balls[0],如图2-10所示。
● 要访问第二个元素(绿球),你可以使用magic_balls[1],如图2-10所示。
● 要访问第三个元素(闪亮宝石),你可以使用magic_balls[2],如图2-10所示。
图2-10
4.交换列表元素位置
交换列表中两个元素的位置是常见的操作,这通常需要使用一个临时变量来完成,但在Python中,我们可以使用一个简便的方法来交换两个元素。
例如,要交换图2-10中的“蓝球”和“绿球”,你可以这样做:
这行代码的意思是将magic_balls[0]和magic_balls[1]的值进行交换,交换过程如图2-11所示。执行上面这行代码后,列表的内容为:
图2-11
这种交换方法非常简便,不需要使用额外的临时变量,这是Python中的一个很实用的特性。
5.创建元组
元组是另一种神奇的数据类型,类似于列表,但元组中的内容不可被修改。元组使用圆括号()来定义,而不使用列表的方括号[]:
假设你要记录一场魔法比赛的得分,并且这些得分是不会改变的。你可以使用元组来记录得分:
这段代码告诉计算机:这是一场魔法比赛的得分记录,分数分别为98、87、95、91和100。计算机会把这些分数展示出来。
元组的最大特点是它的不可变性。这意味着一旦创建了一个元组,就不能修改它。这与列表不同,列表是可以被修改的。
例如,以下操作在列表中是合法的,但在元组中会引发错误:
colors[1]="黄"这行代码试图将元组colors中的第二个元素的值修改为“黄”。由于元组不允许修改其中的值,因此这行代码执行时会引发错误,程序将抛出异常。
6.访问元组元素
元组虽然不能被修改,但你可以使用索引(下标)来访问其中的值,例如,你想知道第三场比赛的得分:
这段代码告诉计算机:我想知道第三场比赛的得分是多少!计算机就会告诉你正确的分数。
通过列表,你可以管理宝物,并随时添加或删除宝物;通过元组,你可以记录不变的数据,也可以方便地查找这些数据。
听魔法师讲解完后,小鱼两眼放光。只见小鱼迅速地创建了一个列表,记录下每个抽屉中的物品:
突然,小鱼注意到地上有一张旧纸片,上面写着:当火龙果在香蕉之前,大门将为你打开。他意识到这是一个线索!
小鱼迅速地使用列表的元素交换魔法,来完成这个任务:
随着代码的执行,巨大的锁发出了响声,慢慢地打开了,城堡的大门也随之打开。两人走进了城堡。
当小鱼和魔法师进入城堡后,他们在一个古老的房间中发现了一个巨大的魔法盒,盒子的上方有几个凹槽。房间的另一侧有一个陈列台,上面摆放着各种形状的魔法物品。
魔法师解释说:“这个魔法盒是古代魔法师用来存储强大魔法的地方。为了保护魔法,他们设计了一个谜题。我们需要从陈列台上选择正确的物品,并按照特定的顺序放入魔法盒的凹槽中,才能解锁盒子,并获得里面的魔法。”
小鱼注意到陈列台上的物品与魔法盒的凹槽大小都能匹配,但他不确定应该如何对这些物品进行选择和排序。这时,他想到了可以使用列表和元组。
小鱼迅速地创建了一个列表,记录下了他认为应该放入魔法盒中的物品:
为了确定物品如何排序,小鱼继续在房间中寻找线索。这时,小鱼注意到墙上有一幅古老的壁画,壁画上描绘了四个物品:一个金币、一把钥匙、一个红宝石和一个绿宝石戒指。这四个物品与陈列台上的物品完全匹配。更为重要的是,壁画的下方有一段古老的魔法歌谣:
银光闪烁的匙,首先照亮了路;
红宝石的火焰,紧随其后;
金币的光芒,为你指明方向;
绿宝石的戒指,守护着最后的希望。
小鱼仔细研究这段歌谣,并迅速地意识到这是解开魔法盒之谜的关键。歌谣中描述的物品顺序与他最初的想法是不同的。
他迅速地调整了物品的顺序:
这段代码将红宝石和钥匙的位置进行交换,并交换绿宝石戒指和金币的位置。
为了确保物品的顺序不会被打乱,小鱼使用tuple()方法,将列表items_to_use转换为一个元组,以此来确定物品的顺序不会被改变:
小鱼按照这个顺序,将物品放入魔法盒的凹槽中。随着最后一个物品的放入,魔法盒发出了一道光芒,然后缓缓打开,里面的光芒逐渐散去,小鱼和魔法师看到了一个闪闪发光的魔法碎片,它散发出温暖的光芒,仿佛有生命一般。小鱼小心翼翼地拿起魔法碎片,感受到了一股强大的魔法力量。
魔法师微笑地说:“这是一个非常古老的魔法碎片,它拥有强大的魔法能量。你成功地解开了魔法盒的谜题,证明你已经掌握了列表和元组的知识,这个魔法碎片是你的奖励。”
小鱼高兴地说:“谢谢你,魔法师!我会继续努力,学习更多的编程知识。”
魔法师点点头:“你做得很好,小鱼。前方还有更多的挑战等着你。”
小鱼充满信心地说:“我不怕,我会继续努力学习编程知识,收集所有的魔法碎片。”
魔法师微笑地看着小鱼:“我相信你,小鱼。现在,让我们继续前进,继续探索魔法世界。”
魔法小贴士
列表和元组是Python中的有序集合,允许我们存储和组织多个数据项。列表是可变的,这意味着我们可以添加、删除或修改其内容。元组是不可变的,一旦创建就不能更改元组的内容。当对列表进行操作时,要注意其可变性。任何对列表的修改都会直接影响原始列表。在选择使用列表还是元组时,需要考虑数据是否需要经常更改,以及对数据的具体需求。掌握列表和元组,你将能更有效地组织和处理数据!
思维导图