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中变量的拷贝和作用域问题
May 05 Python
Python正则表达式如何进行字符串替换实例
Dec 28 Python
Python调用系统底层API播放wav文件的方法
Aug 11 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
Django实现表单验证
Sep 08 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
Python生成一个迭代器的实操方法
Jun 18 Python
Django框架下静态模板的继承操作示例
Nov 08 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
Python安装Bs4的多种方法
Nov 28 Python
Python内置类型集合set和frozenset的使用详解
Apr 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将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
python3.0 字典key排序
2008/12/24 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
使用Python读取大文件的方法
2018/02/11 Python
python中reader的next用法
2018/07/24 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
python 实用工具状态机transitions
2020/11/21 Python
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
家长会邀请书
2014/01/25 职场文书
总经理的岗位职责
2014/02/23 职场文书
自荐信格式范文
2015/03/04 职场文书
归途列车观后感
2015/06/17 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
Python办公自动化之Excel(中)
2021/05/24 Python
Python re.sub 反向引用的实现
2021/07/07 Python
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android