习题 34: 访问列表的元素?

列表的用处很大,但只有你能访问里边的内容时它才能发挥出作用来。你已经学会了按顺序读出列表的内容,但如果你要得到第 5 个元素该怎么办呢?你需要知道如何访问列表中的元素。访问第一个元素的方法是这样的:

animals = ['bear', 'tiger', 'penguin', 'zebra']
bear = animals[0]

你定义一个 animals 的列表,然后你用 0 来获取第一个元素?! 这是怎么回事啊?因为数学里边就是这样,所以 Python 的列表也是从 0 开始的。虽然看上去很奇怪,这样定义其实有它的好处,时时彩计划软件公式:而且实际上设计成 0 或者 1 开头其实都可以,

最好的解释方式是将你平时使用数字的方式和程序员使用数字的方式做对比。

假设你在观看上面列表中的四种动物(['bear', 'tiger', 'penguin', 'zebra']) 的赛跑,而它们比赛的名词正好跟列表里的次序一样。这是一场很激动人心的比赛,因为这些动物没打算吃掉对方,而且比赛还真的举办起来了。结果你的朋友来晚了,他想知道谁赢了比赛,他会问你“嘿,谁是第 0 名”吗?不会的,他会问“嘿,谁是第 1 名?”

这是因为动物的次序是很重要的。没有第一个就没有第二个,没有第二个也没有第三个。第零个是不存在的,因为零的意思是什么都没有。“什么都没有”怎么赢比赛嘛,完全不合逻辑。这样的数字我们称之为“序数(ordinal number)”,因为它们表示的是事物的顺序。

而程序员不能用这种方式思考问题,因为他们可以从列表的任何一个位置取出一个元素来。对程序员来说,上述的列表更像是一叠卡片。如果他们想要 tiger,就抓它出来,如果想要zebra,也一样抓取出来。要随机地抓取列表里的内容,列表的每一个元素都应该有一个地址,或者一个 “index(索引)”,而最好的方式是使用以 0 开头的索引。相信我说的这一点吧,这种方式获取元素会更容易。这类的数字被称为“基数(cardinal number)”,它意味着你可以任意抓取元素,所以我们需要一个 0 号元素。

那么,这些知识对于你的列表操作有什么帮助呢?很简单,每次你对自己说“我要第 3 只动物”时,你需要将“序数”转换成“基数”,只要将前者减 1 就可以了。第 3 只动物的索引是 2,也就是 penguin。由于你一辈子都在跟序数打交道,所以你需要用这种方式来获得基数,只要减 1 就都搞定了。

记住: ordinal == 有序,以 1 开始;cardinal == 随机选取, 以 0 开始。

让我们练习一下。定义一个动物列表,然后跟着做后面的练习,你需要写出所指位置的动物名称。如果我用的是“1st, 2nd”等说法,那说明我用的是序数,所以你需要减去 1。如果我给你的是基数(0, 1, 2),你只要直接使用即可。 .. code-block:: python

animals = [‘bear’, ‘python’, ‘peacock’, ‘kangaroo’, ‘whale’, ‘platypus’]
  1. The animal at 1.
  2. The 3rd animal.
  3. The 1st animal.
  4. The animal at 3.
  5. The 5th animal.
  6. The animal at 2.
  7. The 6th animal.
  8. The animal at 4.

对于上述每一条,以这样的格式写出一个完整的句子:“The 1st animal is at 0 and is a bear.” 然后倒过来念:“The animal at 0 is the 1st animal and is a bear.”

使用 python 检查你的答案。

加分习题?

  1. 上网搜索一下关于序数(ordinal number)和基数(cardinal number)的知识并阅读一下。
  2. 以你对于这些不同的数字类型的了解,解释一下为什么 “January 1, 2010” 里是 2010 而不是 2009?(提示:你不能随机挑选年份。)
  3. 再写一些列表,用一样的方式作出索引,确认自己可以在两种数字之间互相翻译。
  4. 使用 python 检查自己的答案。

Warning

会有程序员告诉你让你去阅读一个叫“Dijkstra”的人写的关于数字的话题。我建议你还是不读为妙。除非你喜欢听一个在编程这一行刚兴起时就停止从事编程了的人对你大喊大叫。

Project Versions

Table Of Contents

Previous topic

习题 33: While 循环

Next topic

习题 35: 分支和函数

This Page

内蒙古时时彩赚钱吗 同创时时彩平台 重庆时时彩专家预测号 时时彩赔惨啦 安卓时时彩软件
彩博士 时时彩官网平台注册 领航时时彩四星软件 时时彩软件下载9527ssc 铜陵时时彩平台
时时彩投注软件 领航时时彩后三交集 博彩小平台 技巧时时彩计划软件手机版式 定制时时彩挂机软件
手机版时时彩软件 江西时时彩9月1日走势图 成都服装定制软件开发 内蒙古时时彩注册银狐娱乐 腾龙时时彩做号
北京赛车pk10开奖记录 辽宁风采35选7走势图 赛车pk10直播 江苏快3软件 江西快3基本走势图
集结号棋牌游戏大厅 北京11选5开奖5结果 新疆时时彩彩经网 甘肃快3号码推荐计划卐上海快3彩票玩法计划卐上海快3开奖结果查询今天开奖结果计划卐上海快三预测号码 传奇私服赌博技巧
山西省福彩快乐10分开奖查询 吉林11选55月28日开奖号 今日贵州快3开状结果 澳门葡京赌场 江苏十一选五最新开奖
湖南快乐十分官网下载 双色球开奖结果 内蒙古11选5 时时彩平台出租价格 宁夏体彩十一选五走势图