Python3基础之list列表实例解析


Posted in Python onAugust 13, 2014

通常来说Python中任何值都是一个对象,因此任何类型(int、str、list…)都是一个类。而类就必然有它的方法或属性,我们要记下这么多类的所有方法显然是不可能的,对此本文介绍两个小技巧:

dir() :内置函数,用来查询一个类或者对象所有属性,比如>>> dir(list)。

help() :内置函数,用来查询具体的说明文档,比如>>> help(int)。

在上一篇的Python3的基本数据类型中,我们初步了解了list列表,也介绍了列表是Python 中使用最频繁的数据类型。本文将进一步深入学习列表的使用。

一、列表的方法:

list.append(x)
在列表的尾部添加一个项,等价于 a[len(a):] = [x]。

list.extend(L)
将给定的列表L接到当前列表后面,等价于 a[len(a):] = L。

list.insert(i, x)
在给定的位置 i 前插入项,例如:a.insert(0, x) 会在列表的头部插入,而 a.insert(len(a), x) 则等价于 a.append(x)。

list.remove(x)
移除列表中第一个值为 x 的项,没有的话会产生一个错误。

list.pop([i])
删除列表给定位置的项,并返回它。如果没指定索引,a.pop()移除并返回列表最后一项。(方括号表示可选)

list.clear()
删除列表中的所有项,相当于 del a[:]。

list.index(x)
返回列表中第一个值为 x 的项的索引。如果没有匹配的项, 则产生一个错误。

list.count(x)
返回列表中 x 出现的次数。

list.sort()
就地完成列表排序。

list.reverse()
就地完成列表项的翻转。

list.copy()
返回列表的一个浅拷贝,相当于a[:]。

二、列表当栈

List的方法使得其可以很方便地作为一个栈来使用。我们知道,栈的特点是最后进入的元素最先出来(即后入先出),用append()方法进行压栈,用不指定索引的pop()方法进行出栈。

示例代码如下:

stack = []
for x in range(1,6):
 stack.append(x)  # 入栈
 print('push', x, end=' ')
 print(stack)

print('Now stack is', stack)

while len(stack)>0:
 print('pop', stack.pop(), end=' ') # 出栈
 print(stack)

三、列表当队列

列表还可以当作队列来使用,队列的特性是第一个加入的元素第一个取出来(即先入先出)。然而,把列表当队列使用效率并不高,因为从列表的尾部添加和弹出元素是很快的,而在列表的开头插入或弹出是比较慢的(因为所有元素都得移动一个位置)。
要实现一个队列, 使用标准库的collections.deque, 它被设计成在两端添加和弹出都很快。

示例代码如下:

from collections import deque
queue = deque()    # 创建空队列
for x in range(1,6):
 queue.append(x)  # 入队
 print('push', x, end=' ')
 print(list(queue))

print('Now queue is', list(queue))

while len(queue)>0:
 print('pop', queue.popleft(), end=' ') # 出队
 print(list(queue))

四、列表推导式

列表推导式提供了从序列创建列表的简单途径。通常程序会对序列的每一个元素做些操作,并以其结果作为新列表的元素,或者根据指定的条件来创建子序列。

列表推导式的结构是:在一个方括号里,首先是一个表达式,随后是一个 for 子句,然后是零个或更多的 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。

示例代码如下:

squares = [x**2 for x in range(10)] # 推导式
print(squares)
# 输出是[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
pairs = [(x, y) for x in [1,2,3] for y in [3,1,4] if x!=y] # 推导式
print(pairs)
# 输出是[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

五、列表嵌套

Python中并没有二维数组的概念,但我们可以通过列表嵌套达到同样的目的。

mat = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
   ]

同样,我们可以使用推导式生成嵌套的列表:

mat = [[1,2,3], [4,5,6], [7,8,9]]
new_mat = [ [row[i] for row in mat] for i in [0,1,2] ] # 嵌套
print(new_mat)
# 输出[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

附:del语句

del语句可以通过给定索引(而不是值)来删除列表中的项,它与返回一个值的pop()方法不同。del语句也可以移除列表中的切片,或者清除整个列表 :

lst = [1,2,3,4,5,6,7,8,9]
del lst[2]  # 删除指定索引项
print(lst)  
del lst[2:5] # 删除切片
print(lst)
del lst[:]  # 删除整个列表
print(lst)
del也可以用于删除变量实体:
del lst

在删除变量实体之后引用 lst 的话会产生错误。

Python 相关文章推荐
python下MySQLdb用法实例分析
Jun 08 Python
python获取list下标及其值的简单方法
Sep 12 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
Apr 15 Python
Python 自动化表单提交实例代码
Jun 08 Python
python3 pillow生成简单验证码图片的示例
Sep 19 Python
python 列表降维的实例讲解
Jun 28 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
Django 中使用流响应处理视频的方法
Jul 20 Python
PyQt5 在label显示的图片中绘制矩形的方法
Jun 17 Python
Python logging模块handlers用法详解
Aug 14 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 05 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
Apr 20 Python
Python3基础之基本数据类型概述
Aug 13 #Python
Python常用正则表达式符号浅析
Aug 13 #Python
wxpython中利用线程防止假死的实现方法
Aug 11 #Python
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 #Python
Python 执行字符串表达式函数(eval exec execfile)
Aug 11 #Python
Python def函数的定义、使用及参数传递实现代码
Aug 10 #Python
Python-基础-入门 简介
Aug 09 #Python
You might like
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
JavaScript中的值类型详细介绍
2014/12/29 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
vue写一个组件
2018/04/09 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
Python 逐行分割大txt文件的方法
2017/10/10 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
python实现交并比IOU教程
2020/04/16 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
final, finally, finalize的区别
2012/03/01 面试题
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js
能让Python提速超40倍的神器Cython详解
2021/06/24 Python