2018-04-29
访问列表元素
len:获得列表长度
用 0 来获取第一个元素?这是怎么回事啊?
序数和基数从20世纪70年代一直辩论到20世纪80年代
假设你在观看上面列表中的四种动物 (['bear', 'tiger', 'penguin', 'zebra'])的赛跑,而它们比赛的名词正好跟列表里的次序一样。这是一场很激动人心的比赛,因为这些动物没打算吃掉对方,而且比赛还真的举办起来了。结果你的朋友来晚了,他想知道谁赢了比赛,他会问你“嘿,谁是第0 名”吗?不会的,他会问“嘿,谁是第 1 名?”
这是因为动物的次序是很重要的。没有第一个就没有第二个,没有第二个也没有第三个。第零个是不存在的,因为零的意思是什么都没有。“什么都没有”怎么赢比赛嘛,完全不合逻辑。这样的数字我们称之为“序数(ordinal number)”,因为它们表示的是事物的顺序。
而程序员不能用这种方式思考问题,因为他们可以从列表的任何一个位置取出一个元素来。对程序员来说,上述的列表更像是一叠卡片。如果他们想要tiger,就抓它出来,如果想要zebra,也一样抓取出来。要随机地抓取列表里的内容,列表的每一个元素都应该有一个地址,或者都应该有一个“index(索引) ”,而最好的方式是使用以 0 开头的索引。相信我说的这一点吧,这种方式获元素会更容易。这类的数字被称为“基数(cardinalnumber)”,它意味着你可以任意抓取元素,所以我们需要一个 0 号元素。
那么,这些知识对于你的列表操作有什么帮助呢?很简单,每次你对自己说“我要第3 只动物”时,你需要将“序数”转换成“基数”,只要将前者减 1 就可以了。第 3 只动物的索引是2,也就是 penguin。由于你一辈子都在跟序数打交道,所以你需要用这种方式来获得基数,只要减1 就都搞定了。
记住: ordinal == 有序,以 1 开始; cardinal == 随机选取, 以 0 开始。
网友评论