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

简介:

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

1.6 写一个列表

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

1.6.1 准备工作

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

1.6.2 操作方法

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

# 1.快速地创建一个列表
a = range(1,10)
print a
b = ["a","b","c"]
print b

# 2.列表可以通过索引来访问,索引起始于0
print a[0]

# 3.用负数作为索引,则对列表元素的访问从反方向开始
a[-1]

# 4.使用两个索引参数,切片操作可以访问列表的子集
print a[1:3] # prints [2, 3]
print a[1:] # prints [2, 3, 4, 5, 6, 7, 8, 9]
print a[-1:] # prints [9]
print a[:-1] # prints [1, 2, 3, 4, 5, 6, 7, 8]

# 5.列表串联
a = [1,2]
b = [3,4]
print a + b # prints [1, 2, 3, 4]

# 6.列表的最小值和最大值
print min(a),max(a)

# 7.包含于和非包含于
if 1 in a:
     print "Element 1 is available in list a"
else:
     print "Element 1 is available in tuple a"

# 8.追加和扩展列表
a = range(1,10)
print a
a.append(10)
print a

# 9.列表实现栈
a_stack = []

a_stack.append(1)
a_stack.append(2)
a_stack.append(3)

print a_stack.pop()
print a_stack.pop()
print a_stack.pop()

# 10.列表实现队列
a_queue = []

a_queue.append(1)
a_queue.append(2)
a_queue.append(3)

print a_queue.pop(0)
print a_queue.pop(0)
print a_queue.pop(0)

# 11.列表排序和反转
from random import shuffle
a = range(1,20)
shuffle(a)
print a
a.sort()
print a

a.reverse()
print a

1.6.3 工作原理

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

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

>>> a = range(1,10)
>>> print a

[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a.append(10)
>>> print a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>

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

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

>>> b=range(11,15)
>>> a.extend(b)
>>> print a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>>

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

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

3
2
1

最后一个被追加进来的元素被第一个取回,这就是栈的后进先出(Last In First Out,LIFO)。

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

1
2
3

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

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

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

a = range(1,20)

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

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

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

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

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

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

1.6.4 更多内容

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

https://docs.python.org/2/library/collections.html#collections.deque

相关文章
|
1月前
|
存储 算法 数据挖掘
python列表简介(二)
python列表简介(二)
31 2
|
3天前
|
算法 数据挖掘 数据处理
使用 Python 循环创建多个列表
在Python中,动态创建多个列表对于数据处理和算法实现十分有用。本文介绍了四种方法:1) 列表推导式,如创建偶数和奇数列表;2) 使用循环和`append()`,示例为生成斐波那契数列;3) 结合字典与循环,按条件(如正负数)分组;4) 列表生成器,用于一次性生成多组随机数列表。这些方法有助于提高代码效率和可读性。
14 1
|
8天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
19 1
|
10天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
50 0
|
10天前
|
索引 容器
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
|
11天前
|
存储 索引 Python
python学习5-列表的创建、增删改查、排序
python学习5-列表的创建、增删改查、排序
|
14天前
|
数据采集 机器学习/深度学习 数据可视化
数据科学面试准备:解决Python数据分析常见问答和挑战
【4月更文挑战第12天】本文介绍了Python数据分析面试中常见的问题和挑战,涉及Pandas、NumPy、Matplotlib等库的基础知识,以及数据预处理、探索性分析、可视化、回归分析和分类分析的方法。例如,使用Pandas处理缺失值和异常值,利用Matplotlib和Seaborn进行数据可视化,通过Scikit-learn进行回归和分类模型的构建。
|
17天前
|
索引 Python 容器
python 数据类型之列表
python 数据类型之列表
|
19天前
|
索引 Python
Python标准数据类型-List(列表)
Python标准数据类型-List(列表)
42 1
|
24天前
|
存储 Java 程序员
【Python】6. 基础语法(4) -- 列表+元组+字典篇
【Python】6. 基础语法(4) -- 列表+元组+字典篇
41 1