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下载数据保存实例
Nov 20 Python
python求素数示例分享
Feb 16 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
django mysql数据库及图片上传接口详解
Jul 18 Python
python利用datetime模块计算程序运行时间问题
Feb 20 Python
python实现FTP循环上传文件
Mar 20 Python
Python新手学习函数默认参数设置
Jun 03 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
python 绘制正态曲线的示例
Sep 24 Python
Python:__eq__和__str__函数的使用示例
Sep 26 Python
python飞机大战游戏实例讲解
Dec 04 Python
python flappy bird小游戏分步实现流程
Feb 15 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/06/06 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
基于命令行执行带参数的php脚本并取得参数的方法
2016/01/25 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
Javascript Object.extend
2010/05/18 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
详解Bootstrap插件
2016/04/25 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
彻底理解Python list切片原理
2017/10/27 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
自我评价格式
2014/01/06 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python