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基于FTP模块实现ftp文件上传操作示例
Apr 23 Python
python3.x实现发送邮件功能
May 22 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
Win8下python3.5.1安装教程
Jul 29 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
Python OpenCV实现视频分帧
Jun 01 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
Oct 14 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 Python
在CentOS7下安装Python3教程解析
Jul 09 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
Feb 06 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与MySQL开发的8个技巧小结
2010/12/17 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
php计算一个文件大小的方法
2015/03/30 PHP
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
Python中字符串的修改及传参详解
2016/11/30 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
详解用python写一个抽奖程序
2019/05/10 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
职工运动会邀请函
2014/01/19 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
分家协议书
2014/04/21 职场文书
理财学专业自荐书
2014/06/28 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
授权委托书(完整版)
2014/09/10 职场文书
党校毕业心得体会
2014/09/13 职场文书
《将心比心》教学反思
2016/02/23 职场文书
Redis基本数据类型List常用操作命令
2022/06/01 Redis
table不让td文字溢出操作方法
2022/12/24 HTML / CSS