列表的用处很大,但只有你能访问里边的内容时它才能发挥出作用来。你已经学会了按顺序读出列表的内容,但如果你要得到第 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),你只要直接使用即可。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” 的人写的关于数字的话题。我建议你还是不读为妙。除非你喜欢听一个在编程这一行刚兴起时就停止从事编程了的人对你大喊大叫。

python编程试题定位列表元素的函数是_笨办法学Python 习题 34: 访问列表的元素相关推荐

  1. python列表两两相减_笨办法学python(二)数值、变量以及运算

    第二课提纲 一.注释 单行注释 # 多行注释 ''' 二.变量 变量声明 内存管理 变量类型 type(x) isinstance(x,int) 三.数字运算 实数相加减 复数相运算 四.运算符与表达 ...

  2. 笨办法学python pdf 第三版_笨办法学python第三版

    笨办法学python第三版pdf电子书是一本Python学习参考书,是美国程序员Zed A.Shaw编著,通过简单通俗的方法,结合内部的集体,让程序员学懂python,适用于初级学习python编程的 ...

  3. 笨办法学python第五版_笨办法学python PDF下载|笨办法学python第五版 电子版附目录_最火软件站...

    笨办法学Python第五版PDF电子版是专门为初学Python的朋友准备的一款电子图书资料,可以帮助你更好的学习Python编程知识,该电子书每章节都附带了常见问题回答以及练习题目,能够帮助学习者快速 ...

  4. 笨办法学python在线阅读_笨办法学python全集.pdf

    TableofContents 笨办法学Python 1.1 序言 1.2 前言 1.3 简介 1.4 练习0.安装和准备 1.5 练习1.第一个程序 1.6 练习2.注释和井号"#&quo ...

  5. 笨办法学python3进阶篇下载_笨办法学Python 3 进阶篇

    书名:"笨办法"学Python 3:进阶篇 定价:59.0 ISBN:9787115505392 作者: 泽德·A. 肖 版次:第1版 出版时间:2020-06 内容提要: 本书是 ...

  6. python函数作为参数例题_笨办法学Python 习题 19: 函数和变量

    函数这个概念也许承载了太多的信息量,不过别担心.只要坚持做这些练习,对照上个练习中的检查点检查一遍这次的联系,你最终会明白这些内容的. 有一个你可能没有注意到的细节,我们现在强调一下:函数里边的变量和 ...

  7. python从属关系编号_笨办法学Python 习题 42: 对象、类、以及从属关系

    有一个重要的概念你需要弄明白,那就是"类 (class)" 和"对象 (object)" 的区别.问题在于, class 和object 并没有真正的不同.它们 ...

  8. 笨方法学 python3进阶篇_笨办法学Python 3 进阶篇

    部分准备知识1 如果不喜欢作者的个人流程怎么办2 如果发现自己太糟糕怎么办2 习题0准备工作3 程序员用的编辑器3 Python3.63 工作终端4 pip和virtualenv的配置4 实验笔记4 ...

  9. 笨办法学python3进阶篇_笨办法学Python 3 进阶篇

    第 一部分 准备知识 1 如果不喜欢作者的个人流程怎么办 2 如果发现自己太糟糕怎么办 2 习题0 准备工作 3 程序员用的编辑器 3 Python 3.6 3 工作终端 4 pip和virtuale ...

最新文章

  1. python开源商城_Leaf - 一个开发友好、功能完备的开源微信商城框架
  2. 附录G Netty与NettyUtils
  3. leetcode python 032 识别最长合法括号
  4. 专访周志华、宋继强:高端AI人才要具备哪些素质?深度学习的局限性和未来?...
  5. 基于PU-Learning的恶意URL检测
  6. Handlebars模板库浅析
  7. mysql字符集调整总结
  8. JAVA 蹒跚自学之 第七日 数组选择 冒泡排序优化
  9. ADO.NET Entity Framework(3)ObjectContext
  10. 在eclipse环境下配置OpenCV环境
  11. uniapp app 腾讯云 IM 创建群组(陌生交友)
  12. flutter基础布局之 对话框Dialogs
  13. 小说作者推荐:春如棠合集
  14. 利用Yocto构建嵌入式Linux教程02--Yocto的一些基本概念介绍
  15. 软文标题怎么写?这8种标题写法你用对了吗
  16. 用ffmpeg修改MP4文件头信息,使其支持流式加载及播放
  17. 最新彩色文字方格广告位代码
  18. 设计模式之代理模式(C++)
  19. 在职场中如何保持新鲜感
  20. 新版标准日本语高级_第24课

热门文章

  1. ISLR线性回归笔记
  2. LDNFSGB: prediction of long non-coding rna and disease association using network feature similarity
  3. python 调用函数内部参数
  4. 网络模型 Inception V2/V3-Rethinking the Inception Architecture for Computer Vision
  5. Java 内存泄漏监控检测与分析
  6. LeetCode 218. The Skyline Problem
  7. Linux: debian/ubuntu下安装和使用Java 8
  8. Linux更新pip国内源
  9. java自然排序_Java中的自然排序顺序字符串比较 - 是内置的吗?
  10. kafka高可用(集群)