跟老齐学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实现给数组按片赋值的方法
Jul 28 Python
python版本的读写锁操作方法
Apr 25 Python
简单谈谈python中的语句和语法
Aug 10 Python
Django如何实现内容缓存示例详解
Sep 24 Python
Python中property函数用法实例分析
Jun 04 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
Apr 26 Python
Django跨域请求原理及实现代码
Nov 14 Python
python中的对数log函数表示及用法
Dec 09 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 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 include的妙用,实现路径加密
2008/07/29 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
超清晰的document对象详解
2007/02/27 Javascript
javascript入门·对象属性方法大总结
2007/10/01 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
python读取LMDB中图像的方法
2018/07/02 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
采购部岗位职责
2013/11/24 职场文书
护士个人自我鉴定
2014/03/24 职场文书
网络妈妈观后感
2015/06/08 职场文书
财务管理制度范本
2015/08/04 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
MySQL去除密码登录告警的方法
2022/04/20 MySQL