Exercise 34:访问列表元素

原文链接:http://learnpythonthehardway.org/book/ex34.html

       列表在编程中是非常有用的,但是除非你能得到列表中的元素否则的话也不是那么有用了。你已经知道怎样按顺序遍历列表中的元素,但是如果你想说,我想得到第五个元素该怎么办呢?这就得徐汇如何去访问一个列表中的元素。下面就是一个怎么访问列表中的第一个元素的例子:

animals = ['bear' ,'tiger' ,'penguin' ,'zebra']
bear = animals[0]
       你得到了一个animals的列表,然后用 animals[0]就得到了列表中的第一个元素?!这是怎么实现的啊?因为数学的工作原理,Python计数是从0开始而不是1 。这看起来好像怪怪的,但是这种形式有很多优势,而且实际上设计成 0 或者 1 开头其实都可以。

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

       想象一下你正在观看上面提到的四种动物(['bear', 'tiger', 'penguin', 'zebra']) 的赛跑比赛。而它们比赛的名次正好跟列表里的次序一样。这是一场很激动人心的比赛,因为这些动物没打算吃掉对方,而且比赛还真的举办起来了。然而你的朋友来晚了,他想知道最后谁赢了。难道你的朋友会这样问你:“嘿,谁跑了第0名啊?" ,他肯定不会这样说的,而是说:”嘿,谁跑了第1名啊?“。

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

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

        怎样可以帮你更好的理解使用列表呢?很简单,只要你每次对自己说,”我想要第三个动物“,你就应该把这里的”序数“通过减一转换成”基数“。第”三"个懂就是列表中索引2位置上的 penguin 元素。由于你一辈子都在跟序数打交道,所以你需要用这种方式来获得基数,只要减 1 就都搞定了。

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

        让我们来训练一下,就用这里的animals列表,下面的练习中我告诉你了列表中的某个序数或者基数值,你需要写下列表中相对应的元素。记住,如果我说“first”,“second”等等,那么我就是使用的序数,你就应该在此基础上减1。如果我给你的是基数(0 ,1 ,2)那么直接使用它就可以了。

animals = ['bear', 'python', 'peacock', 'kangaroo', 'whale', 'platypus']
The animal at 1.		#python
The third (3rd) animal.		#peacock
The first (1st) animal.		#bear
The animal at 3.		#kangaroo
The fifth (5th) animal.		#whale
The animal at 2.		#peacock
The sixth (6th) animal.		#platypus
The animal at 4.		#whale

对于上面的每个练习,写下像下面这种形式的完整句子:“第1个动物就是列表0位置上的bear。"然后反过来,”在列表0位置上的动物就是第一个动物bear“。

使用Python来检查你的回答是否正确。

研究训练:

1、在线阅读关于序数和基数的介绍。
2、在你知道了这两种数据类型的不同后,你能介绍为什么在”January 1 ,2010”中的第2010年是真的2010年而不是2009年吗?(提示:你是不能随意挑选年份)
3、再写一些列表,用一样的方式作出索引,确认自己可以在两种数字之间互相翻译。
4、同样使用Python检查你自己的答案。

警告:
会有程序员告诉你让你去阅读一个叫“Dijkstra”的人写的关于数字的话题。我建议你还是不读为妙。除非你喜欢听一个在编程这一行刚兴起时就停止从事编程了的人对你大喊大叫。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值