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创建一个最简单http webserver服务器的方法
May 08 Python
Ubuntu下安装PyV8
Mar 13 Python
磁盘垃圾文件清理器python代码实现
Aug 24 Python
利用python对Excel中的特定数据提取并写入新表的方法
Jun 14 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
pandas的qcut()方法详解
Jul 06 Python
对pytorch的函数中的group参数的作用介绍
Feb 18 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
python 数据分析实现长宽格式的转换
May 18 Python
python上下文管理器异常问题解决方法
Feb 07 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
用PHP发电子邮件
2006/10/09 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
javascript制作坦克大战全纪录(2)
2014/11/27 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
Python类成员继承重写的实现
2020/09/16 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
Python面试题:Python是如何进行内存管理的
2014/08/04 面试题
旺仔牛奶广告词
2014/03/20 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
学子宴致辞大全
2015/07/27 职场文书