跟老齐学Python之有容乃大的list(2)


Posted in Python onSeptember 15, 2014

对list的操作

合并list

《有容乃大的list(1)》中,对list的操作提到了list.append(x),也就是将某个元素x 追加到已知的一个list后边。

除了将元素追加到list中,还能够将两个list合并,或者说将一个list追加到另外一个list中。按照前文的惯例,还是首先看官方文档中的描述:

list.extend(L)
Extend the list by appending all the items in the given list; equivalent to a[len(a):] = L.
向所有正在学习本内容的朋友提供一个成为优秀程序员的必备:看官方文档,是必须的。

官方文档的这句话翻译过来:

通过将所有元素追加到已知list来扩充它,相当于a[len(a)]= L
英语太烂,翻译太差。直接看例子,更明白

>>> la
[1, 2, 3]
>>> lb
['qiwsir', 'python']
>>> la.extend(lb)
>>> la
[1, 2, 3, 'qiwsir', 'python']
>>> lb
['qiwsir', 'python']

上面的例子,显示了如何将两个list,一个是la,另外一个lb,将lb追加到la的后面,也就是把lb中的所有元素加入到la中,即让la扩容。

学程序一定要有好奇心,我在交互环境中,经常实验一下自己的想法,有时候是比较愚蠢的想法。

>>> la = [1,2,3]
>>> b = "abc"
>>> la.extend(b)
>>> la
[1, 2, 3, 'a', 'b', 'c']
>>> c = 5
>>> la.extend(c)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

从上面的实验中,看官能够有什么心得?原来,如果extend(str)的时候,str被以字符为单位拆开,然后追加到la里面。

如果extend的对象是数值型,则报错。

所以,extend的对象是一个list,如果是str,则python会先把它按照字符为单位转化为list再追加到已知list。

不过,别忘记了前面官方文档的后半句话,它的意思是:

>>> la
[1, 2, 3, 'a', 'b', 'c']
>>> lb
['qiwsir', 'python']
>>> la[len(la):]=lb
>>> la
[1, 2, 3, 'a', 'b', 'c', 'qiwsir', 'python']

list.extend(L) 等效于 list[len(list):] = L,L是待并入的list

list的长度

还记得str的长度怎么获得吗?其长度是什么含呢?那种方法能不能用在list上面呢?效果如何?

做实验:

>>> name = 'qiwsir'
>>> type(name)
<type 'str'>
>>> len(name)
6
>>> lname = ['sir','qi']
>>> type(lname)
<type 'list'>
>>> len(lname)
2
>>> length = len(lname)
>>> length
2
>>> type(length)
<type 'int'>

实验结论:

len(x),对于list一样适用
得到的是list中元素个数
返回值是int类型
list中某元素的个数

上面的len(L),可得到list的长度,也就是list中有多少个元素。python的list还有一个操作,就是数一数某个元素在该list中出现多少次,也就是某个元素有多少个。官方文档是这么说的:

list.count(x)
Return the number of times x appears in the list.
一定要不断实验,才能理解文档中精炼的表达。

>>> la = [1,2,1,1,3]
>>> la.count(1)
3
>>> la.append('a')
>>> la.append('a')
>>> la
[1, 2, 1, 1, 3, 'a', 'a']
>>> la.count('a')
2
>>> la.count(2)
1
>>> la.count(5)   #NOTE:la中没有5,但是如果用这种方法找,不报错,返回的是数字0
0

元素在list中的位置

《有容乃大的list(1)》中已经提到,可以将list中的元素,从左向右依次从0开始编号,建立索引(如果从右向左,就从-1开始依次编号),通过索引能够提取出某个元素,或者某几个元素。就是如这样做:

>>> la
[1, 2, 3, 'a', 'b', 'c', 'qiwsir', 'python']
>>> la[2]
3
>>> la[2:5]
[3, 'a', 'b']
>>> la[:7]
[1, 2, 3, 'a', 'b', 'c', 'qiwsir']

如果考虑反过来的情况,能不能通过某个元素,找到它在list中的编号呢?

看官的需要就是python的方向,你想到,python就做到。

>>> la
[1, 2, 3, 'a', 'b', 'c', 'qiwsir', 'python']
>>> la.index(3)
2
>>> la.index('a')
3
>>> la.index(1)
0
>>> la.index('qi')   #如果不存在,就报错
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 ValueError: 'qi' is not in list
>>> la.index('qiwsir')
6

list.index(x),x是list中的一个元素,这样就能够检索到该元素在list中的位置了。这才是真正的索引,注意那个英文单词index。

依然是上一条官方解释:

list.index(x)
Return the index in the list of the first item whose value is x. It is an error if there is no such item.
是不是说的非常清楚明白了?

先到这里,下讲还继续有容乃大的list.

Python 相关文章推荐
python 输出一个两行字符的变量
Feb 05 Python
Python实现的简单万年历例子分享
Apr 25 Python
Python中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
Python实现获取磁盘剩余空间的2种方法
Jun 07 Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 Python
python tkinter界面居中显示的方法
Oct 11 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
Python定时任务APScheduler的实例实例详解
Jul 22 Python
Python求正态分布曲线下面积实例
Nov 20 Python
详解python metaclass(元类)
Aug 13 Python
使用Django框架创建项目
Jun 10 Python
跟老齐学Python之有容乃大的list(1)
Sep 14 #Python
跟老齐学Python之一个免费的实验室
Sep 14 #Python
跟老齐学Python之从if开始语句的征程
Sep 14 #Python
跟老齐学Python之眼花缭乱的运算符
Sep 14 #Python
跟老齐学Python之玩转字符串(3)
Sep 14 #Python
跟老齐学Python之玩转字符串(2)
Sep 14 #Python
跟老齐学Python之玩转字符串(1)
Sep 14 #Python
You might like
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
php经典算法集锦
2015/11/14 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
2017/07/06 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Python 加密的实例详解
2017/10/09 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
django中间键重定向实例方法
2019/11/10 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
strlen的几种不同实现方法
2013/05/31 面试题
乐观大学生的自我评价
2014/01/10 职场文书
物理学专业自荐信
2014/06/11 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
员工试用期工作总结
2019/06/20 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
Python 视频画质增强
2022/04/28 Python
Python开发五子棋小游戏
2022/05/02 Python