天天看点

《Python数据科学指南》——1.6 写一个列表

本节书摘来自异步社区《python数据科学指南》一书中的第1章,第1.6节,作者[印度] gopi subramanian ,方延风 刘丹 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

列表是一种顺序型的容器对象,它和元组很相似,不过,它们是同构且是可变的。列表支持追加操作,它可以被用来当作栈或者队列。与元组不同,它可以扩展,你可以在创建一个列表之后使用append函数给它追加一个元素。

和介绍元组的小节相似,我们通过一些小段的代码来聚焦于列表的创建与维护操作,而不是像介绍字典那样采用完整的功能代码。

下面的python代码演示列表的创建和维护等操作。

第1步中,我们能看到创建列表的方式与其他的不同,请注意我们只有同类型的元素。和集合不一样,列表允许存在重复的元素。第2步到第7步和元组的相关步骤都是一样的,覆盖了索引、切片、串联、最小最大值、包含于和非包含于等操作,我们不再赘述。

第8步演示了追加和扩展操作,这也是列表区别于元组的地方(当然,请注意列表元素必须是同类型)。我们来看看代码第1部分的输出。

我们看到10被添加到列表a中。

下面的输出是第2部分中扩展函数的演示。

我们用另一个列表b扩展了原来的列表。

在第9步中,我们演示了用列表实现栈的功能,pop()函数用来取回追加到列表中的最后一个元素,输出结果如下。

最后一个被追加进来的元素被第一个取回,这就是栈的后进先出(last in first out,lifo)。

在第10步,我们用列表来实现队列,pop()函数用0作为参数,表明要取出的元素的索引已经被传递了,输出结果如下。

输出结果遵循的是队列的fifo类型,但这是一种低效的方法。由于列表底层实现的方法限制,弹出最初的元素不是一个好的选择。如果想要执行这个操作,一个更有效的方法是使用双端队列数据结构,我们将在下一章节中介绍。

最后一个步骤展示了列表的sort和reverse操作。列表的内置函数sort()可以将列表的元素进行排序,默认是升序排序。本章后面有个专门的小节讲解排序。reverse()函数将列表中的元素进行反转。

我们先来创建一个列表,元素是从1到19。

<code>a = range(1,20)</code>

random模块中有一个shuffle()函数,我们先用它将列表中的元素搅乱,然后我们才能演示排序操作,搅乱后的输出结果如下。

<code>[19, 14, 11, 12, 4, 13, 17, 5, 2, 3, 1, 16, 8, 15, 18, 6, 7, 9, 10]</code>

现在,a.sort()执行了一个位置排序,我们得到如下的输出结果。

<code>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]</code>

reverse()也是一个位置操作,产生如下输出结果。

<code>[19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]</code>

栈或队列只能在一个方向上追加或弹出数据,而双端队列有两个端,可以在不同的端执行追加或弹出数据操作,请参见: