练习 34 获取列表元素

    你创建了一个动物列表,然后用 0 来取列表的第一个元素?!为什么呢?因为数学就是这样的,Python 列表的第一个元素是从序号 0 开始,而不是从 1 开始。这样虽然看起来有点奇怪,但是好处多多。

    最好的解释可能是它反映了人使用数字和程序使用数字的区别。

    想象一下你正在观察列表中的四个动物(熊,老虎,企鹅,斑马)赛跑,它们纷纷冲过了终点线,我们也得到了它们的次序。比赛非常激烈,因为最终它们都没有吃掉彼此。你的一个朋友来晚了,他想知道哪个动物胜出了。他肯定会说“谁得了第一名?”而不是“谁是第零个?”

    然而,程序不会这么想。它们能从一个列表中任意取出一个元素来。对程序而言,动物们的列表更像是一叠卡片。如果它们想要老虎,就直接去拿。如果想要斑马,也能直接去拿。这就需要这些元素能有一个恒定的地址(address),或者索引(index),以便程序能够以一种随机的方式把它们从列表中拿出来。最好的办法就是让指标(indices)从 0 开始。相信我,这样在数学上更为便捷。这种数字叫做基数(cardinal number),它意味着你可以随机取数,所以必须要有一个 0 元素。

    ai酱注:这里感觉老肖没太解释清楚,在百度知道上看到一个回答,可以供大家参考:https://zhidao.baidu.com/question/1693009495708807428.html

    不知道以上解释能否帮助你理解列表?很简单,每次你对自己说,“我要第 3 个动物,”的时候,把 3 这个序数通过 -1 转换成 2 这个基数就行了。第 3 个动物就是索引为 2 的企鹅。你一生都在使用序数,现在你需要用基数来思考,只用减去 1 就行,没那么难。

    让我们练习一下。用如下动物列表,跟着我列出来的序数或基数要求,写出你从列表中取到的动物。记住,如果我说“第1个”(1st)、“第2个”(2nd),那我就是在用序数,直接减1就可以了。如果我说“第1位”(at 1),那我就是在用基数,直接按这个数字取就行。

    animals = ['bear', 'python3.6', 'peacock', 'kangaroo', 'whale', '

    (注:为了不造成混淆,以下内容保留英文原文)

    用 python 验证你的答案。

    • 基于你所学的不同类型数字之间的区别, 你能解释为什么“2010年1月1日”中的2010年真的是2010年而不是2009年?(提示:你不能随机去取年份)
    • 多写一些列表,搞明白列表元素的索引,知道你能够准确掌握。