Python操作列表的常用方法分享


Posted in Python onFebruary 13, 2014

下面列出列表常用的方法操作列表以及小例子:

1.  Append
     在列表末尾添加元素,需在列表末尾添加元素,需要注意几个点:
     A. append中添加的参数是作为一个整体

 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name.append(list(" tiger"))
 >>> name
 ['s', 'c', 'o', 't', 't', [' ', 't', 'i', 'g', 'e', 'r']]

得到的值不是:['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']
如果想要这种的追加方式,可以试试分片赋值(或者下面说到的extend方法):

 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name[len(name):] = list(" tiger")      #从末尾追加
 >>> name
 ['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']

B.append一次性只能添加一个元素

>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.append("A","B")        #添加多个元素即将报错
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: append() takes exactly one argument (2 given)
>>> name.append("A")
>>> name
['s', 'c', 'o', 't', 't', 'A']

2. Count

统计某个元素在列表中出现的次数

>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.count('s')
1
>>> name.count("t")
2
>>> name.count("A")
0
>>> name.append(list("Python"))
>>> name
['s', 'c', 'o', 't', 't', ['P', 'y', 't', 'h', 'o', 'n']]
>>> name.count(['P', 'y', 't', 'h', 'o', 'n'])
1

3. Extend

   在原列表追加另一个序列的中的多个值

 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name.extend(list(" tiger"))
 >>> name
 ['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']

当然,我们可以用分片赋值来实现:

 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name[len(name):] = list(" tiger")
 >>> name
 ['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']

这时小伙伴们会想到,我们可以直接用操作符"+"嘛,还方便些:

 >>> name = list("scott")
 >>> pwd  = list(" tiger")
 >>> name + pwd
 ['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']
 >>> name
 ['s', 'c', 'o', 't', 't']

从这三种方式操作的输出,可以看出:
extend和分片赋值都是修改原列表,相对而言,extend可读性强些,而操作符"+"是生成一个新的列表,不影响原列表,如果
我们需要生成新列表而不影响原列表,就可以用操作符"+"。

4.Index
从列表中找出某个值第一个(注意是第一个)匹配项的索引位置

>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.index('t')    ##第一个字母t的索引位置是3
3   
>>> name.index('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ValueError: list.index(x): x not in list
>>> 'a' in name
False
>>> 'a' not in name
True

从输出可以看出,index找的是第一个匹配项的索引位置,而如果查找的元素不在列表中,会报错(返回-1会不会好一点呢?),当然如果想避免报
错,我们可以先用in操作,判断某个元素是否在某个列表中,如果在的话,然后进行index操作。

5. Insert
    用于将对象插入到列表中,俩个参数,第一个是索引位置,第二个插入的元素对象。

 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name.insert(2,'tiger')     ##在索引为2的地方插入字符串tiger  
 >>> name
 ['s', 'c', 'tiger', 'o', 't', 't']

我们也可以用分片赋值:

 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name[2:2] = ['tiger']
 >>> name
 ['s', 'c', 'tiger', 'o', 't', 't']
 >>> name[2:2] = 'tiger'
 >>> name
 ['s', 'c', 't', 'i', 'g', 'e', 'r', 'tiger', 'o', 't', 't']

这里需要注意的是,如果是插入一个元素,需要用[]括起来,不然,直接用字符串的话,是插入字符串的列表,在索引位置之后添加。
当然,用insert的可读性比分片赋值强。

6. Pop
    移除列表中的一个元素(最后一个元素),并返回该元素的值

>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.pop()
't'
>>> name
['s', 'c', 'o', 't']
>>> name.append("t")
>>> name
['s', 'c', 'o', 't', 't']

分片赋值模拟pop:
 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name[len(name)-1:] = []
 >>> name
 ['s', 'c', 'o', 't']

这上面用pop和append模拟了栈的先进先出LIFO。

7. Remove
   移除列表中某个值的第一匹配项: 如果有俩个相等的元素,就只是移除匹配的一个元素,如果某元素不存在某列表中,便会报错,而且一次性只能
   移除一个元素。

>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.remove("t")    #去掉第一个t
>>> name
['s', 'c', 'o', 't']
>>> name.remove("A")    #不存在会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ValueError: list.remove(x): x not in list
>>> "A" not in name
True
>>> name.remove("s","c")  #一次只能移除一个元素
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: remove() takes exactly one argument (2 given)

8.Revense

   将列表中的元素反向

 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name.reverse()
 >>> name
 ['t', 't', 'o', 'c', 's']

9. Sort & Sorted

    sort方法用于对列表进行排序,修改原列表,不会返回一个已排序的列表副本

 >>> result = [8,5,5,3,9]
 >>> result.sort()
 >>> result
 [3, 5, 5, 8, 9]

如果我们想要返回一个已排序的列表副本,而不影响原来的列表呢,一种方法,我们可以先赋值原来列表(可以用分片赋值复制),然后
在复制的列表上做sort操作,另一种方法,就是使用sorted函数,它会返回已排序的列表副本:

 >>> result = [8,5,5,3,9]
 >>> result2 = sorted(result)
 >>> result
 [8, 5, 5, 3, 9]
 >>> result2
 [3, 5, 5, 8, 9]

关于自定义的比较方法,像javascript做sort可以传入compare函数,java可以传入Comparable<T>实例,Python也类似,留待后续了~(@^_^@)~。
Python 相关文章推荐
python实现随机森林random forest的原理及方法
Dec 21 Python
Python基于property实现类的特性操作示例
Jun 15 Python
python卸载后再次安装遇到的问题解决
Jul 10 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 Python
kafka监控获取指定topic的消息总量示例
Dec 23 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 Python
Python unittest单元测试openpyxl实现过程解析
May 27 Python
python开发前景如何
Jun 11 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
基于tensorflow权重文件的解读
May 26 Python
python基础教程之lambda表达式使用方法
Feb 12 #Python
Python的print用法示例
Feb 11 #Python
python中的yield使用方法
Feb 11 #Python
python重试装饰器示例
Feb 11 #Python
python网络爬虫采集联想词示例
Feb 11 #Python
python基础教程之实现石头剪刀布游戏示例
Feb 11 #Python
python使用递归解决全排列数字示例
Feb 11 #Python
You might like
php 强制下载文件实现代码
2013/10/28 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
详解Python中的静态方法与类成员方法
2017/02/28 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
儿童编程python入门
2018/05/08 Python
Python读写docx文件的方法
2018/05/08 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
python 字段拆分详解
2019/12/17 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
实习单位鉴定评语
2014/04/26 职场文书
车间核算员岗位职责
2014/07/01 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
2016年清明节寄语
2015/12/04 职场文书
Vue2.0搭建脚手架
2022/03/13 Vue.js
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers