《笨办法学 python3》系列练习计划——34.访问列表的元素

题目

本题其实代码量非常少,主要需要理解一个概念——基数(cardinal number);和一个方法——如何获取列表中任意位置的元素。

获取列表中任意位置元素的方法

获取列表中任意位置的元素只需要在列表后面紧跟一个中括号,其中写上要第几个位置的数据就行了,like this:

animals = ['bear', 'tiger', 'penguin', 'zebra']
# 访问第一个元素的方法:
bear = animals[0]

# 获取第三个元素:
penguin = animals[2]

print(bear)
print(penguin)

# 打印结果我觉得是下面这俩哥们,你也试试?
# bear
# penguin

哪,一个方法已经讲完了。
我之前有偷偷用过的,当时也说:计算机是从 0 开始数数的。就搪塞过去了为什么第一个元素是 animals[0] 而不是 animals[1] 的问题。
下面我还是引用 Zed 的原文来说明吧:

基数 cardinal number 的概念

最好的解释方式是将你平时使用数字的方式和程序员使用数字的方式做对比。
假设你在观看上面列表中的四种动物 ( [‘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. 搜索关于序数和基数的概念并学习一下
  2. 以你对于这些不同的数字类型的了解,解释一下为什么 “January 1, 2010” 里是 2010 而不是 2009?(提示:你不能随机挑选年份。)
  3. 再写一些列表,用一样的方式作出索引,确认自己可以在两种数字之间互相翻译。
  4. 使用 python 检查自己的答案

我的答案

34.0 基础练习

animals = [‘bear’, ‘python’, ‘peacock’, ‘kangaroo’, ‘whale’, ‘platypus’]
1. The animal at 1. 是第 2 个动物,它是 python
2. The 3rd animal. 的索引是 2,它是 peacock
3. The 1st animal. 的索引是 0,它是 bear
4. The animal at 3. 是第 4 个动物,它是 kangaroo
5. The 5th animal. 的索引是 4 ,它是 whale
6. The animal at 2. 是第 3 个动物,它是 peacock
7. The 6th animal. 的索引是 5,它是 platypus
8. The animal at 4. 是第 5 个动物,它是 whale

34.2 “January 1, 2010” 为什么是 2010 而不是 2009

年份使用的是序数而不是基数,公元元年是 1 年,而且没有 0 年,所以它就不是 2009 了

扫描二维码关注公众号,回复: 2641151 查看本文章

34.3 - 34.4 自造例子

# python 里遇到的一些单词
python_words = ['print', 'def', 'list', 'input', 'for', 'while', 'if', 'elif', 'else']

print("'list' 是第 3 个单词,它的索引是 4:", python_words.index('list'))
print("索引是 3 的单词是第 4 个词 'input':", python_words[3])
print("'if' 是第 7 个单词,它的索引是 6:", python_words.index('if'))
print("索引 5 的单词是第 6 个词 'while':", python_words[5])

这里写图片描述




返回目录

《笨办法学 python3》系列练习计划——目录

猜你喜欢

转载自blog.csdn.net/aaazz47/article/details/79756555
今日推荐