跟老齐学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安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
python矩阵的转置和逆转实例
Dec 12 Python
Python命名空间的本质和加载顺序
Dec 17 Python
使用turtle绘制五角星、分形树
Oct 06 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
Django 自定义分页器的实现代码
Nov 24 Python
python ftplib模块使用代码实例
Dec 31 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 Python
Golang Web 框架Iris安装部署
Aug 14 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.ini中文版(1)
2006/10/09 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
php按单词截取字符串的方法
2015/04/07 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python函数形参用法实例分析
2015/08/04 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
Django2.1.7 查询数据返回json格式的实现
2020/12/29 Python
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
战略合作协议书范本
2014/04/18 职场文书
五年级学生评语
2014/04/22 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
上级领导检查欢迎词
2015/09/30 职场文书