跟老齐学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 Web开发框架Django
Jun 30 Python
python利用拉链法实现字典方法示例
Mar 25 Python
python3实现UDP协议的服务器和客户端
Jun 14 Python
MySQL适配器PyMySQL详解
Sep 20 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
Mar 23 Python
对Python+opencv将图片生成视频的实例详解
Jan 08 Python
Django ORM 查询管理器源码解析
Aug 05 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 Python
python使用正则表达式匹配txt特定字符串(有换行)
Dec 09 Python
基于Python中Remove函数的用法讨论
Dec 11 Python
python如何读取和存储dict()与.json格式文件
Jun 25 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
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
PHP中phar包的使用教程
2017/06/14 PHP
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
判断用户是否在线的代码
2011/03/05 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
python中正则表达式的使用详解
2014/10/17 Python
python回调函数用法实例分析
2015/05/09 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
Python中的取模运算方法
2018/11/10 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
Python的形参和实参使用方式
2019/12/24 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
新媒传信软件测试面试题
2013/02/24 面试题
企业为何需要商业计划书
2013/12/26 职场文书
安全资金保障制度
2014/01/23 职场文书
岗位职责说明书模板
2014/07/30 职场文书
教师自查自纠材料
2014/10/14 职场文书
2014年加油站工作总结
2014/12/04 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书