跟老齐学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获取远程文件大小的函数代码分享
May 13 Python
python中MySQLdb模块用法实例
Nov 10 Python
Python中的作用域规则详解
Jan 30 Python
Python 递归函数详解及实例
Dec 27 Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
python中append实例用法总结
Jul 30 Python
使用python实现对元素的长截图功能
Nov 14 Python
基于Tensorflow高阶读写教程
Feb 10 Python
python名片管理系统开发
Jun 18 Python
python 爬取豆瓣网页的示例
Apr 13 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
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
关于php开启错误提示的总结
2019/09/24 PHP
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
微信小程序实战之顶部导航栏(选项卡)(1)
2020/06/19 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
使用Python的PEAK来适配协议的教程
2015/04/14 Python
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
浅析使用Python操作文件
2017/07/31 Python
Python高级property属性用法实例分析
2019/11/19 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
深入理解Python 多线程
2020/06/16 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
出纳员的岗位职责
2014/02/22 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
静心口服夜广告词
2014/03/20 职场文书
教师个人事迹材料
2014/12/17 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
2015年依法治校工作总结
2015/07/27 职场文书