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写的一个文本编辑器
Jan 23 Python
给Python IDLE加上自动补全和历史功能
Nov 30 Python
python3实现抓取网页资源的 N 种方法
May 02 Python
python构建自定义回调函数详解
Jun 20 Python
Pycharm编辑器技巧之自动导入模块详解
Jul 18 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
python第三方库学习笔记
Feb 07 Python
python实现简单的购物程序代码实例
Mar 03 Python
详细分析Python collections工具库
Jul 16 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 Python
浅谈Python协程asyncio
Jun 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字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php常用字符函数实例小结
2016/12/29 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
js运动事件函数详解
2016/10/21 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
2018/05/17 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
python操作gmail实例
2015/01/14 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
业务主管岗位职责范本
2013/12/25 职场文书
庆元旦广播稿
2014/02/10 职场文书
董事长助理岗位职责
2014/02/18 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记