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


Posted in Python onSeptember 14, 2014

前面的学习中,我们已经知道了两种python的数据类型:int和str。再强调一下对数据类型的理解,这个世界是由数据组成的,数据可能是数字(注意,别搞混了,数字和数据是有区别的),也可能是文字、或者是声音、视频等。在python中(其它高级语言也类似)把状如2,3这样的数字划分为一个类型,把状如“你好”这样的文字划分一个类型,前者是int类型,后者是str类型(这里就不说翻译的名字了,请看官熟悉用英文的名称,对日后编程大有好处,什么好处呢?谁用谁知道!)。

前面还学习了变量,如果某个变量跟一个int类型的数据用线连着(行话是:赋值),那么这个变量我们就把它叫做int类型的变量;有时候还没赋值呢,是准备让这个变量接收int类型的数据,我们也需要将它声明为int类型的变量。不过,在python里面有一样好处,变量不用提前声明,随用随命名。

这一讲中的list类型,也是python的一种数据类型。翻译为:列表。下面的黑字,请看官注意了:

LIST在python中具有非常强大的功能。

定义

在python中,用方括号表示一个list,[ ]

在方括号里面,可以是int,也可以是str类型的数据,甚至也能够是True/False这种布尔值。看下面的例子,特别注意阅读注释。

>>> a=[]    #定义了一个变量a,它是list类型,并且是空的。
>>> type(a)
<type 'list'>  #用内置函数type()查看变量a的类型,为list
>>> bool(a)   #用内置函数bool()看看list类型的变量a的布尔值,因为是空的,所以为False
False
>>> print a   #打印list类型的变量a
[]

不能总玩空的,来点实的吧。

>>> a=['2',3,'qiwsir.github.io']
>>> a
['2', 3, 'qiwsir.github.io']
>>> type(a)
<type 'list'>
>>> bool(a)
True
>>> print a
['2', 3, 'qiwsir.github.io']

用上述方法,定义一个list类型的变量和数据。

本讲的标题是“有容乃大的list”,就指明了list的一大特点:可以无限大,就是说list里面所能容纳的元素数量无限,当然这是在硬件设备理想的情况下。

list索引

尚记得在《玩转字符串(3)》中,曾经给字符串进行编号,然后根据编号来获取某个或者某部分字符,这样的过程,就是“索引”(index)。

>>> url = "qiwsir.github.io"
>>> url[2]
'w'
>>> url[:4]
'qiws'
>>> url[3:9]
'sir.gi'

在list中,也有类似的操作。只不过是以元素为单位,不是以字符为单位进行索引了。看例子就明白了。

>>> a
['2', 3, 'qiwsir.github.io']
>>> a[0]  #索引序号也是从0开始
'2'
>>> a[1]
3
>>> [2]
[2]
>>> a[:2]  #跟str中的类似,切片的范围是:包含开始位置,到结束位置之前
['2', 3]  #不包含结束位置
>>> a[1:]
[3, 'qiwsir.github.io']
>>> a[-1]  #负数编号从右边开始
'qiwsir.github.io'
>>> a[-2]
3
>>> a[:]
['2', 3, 'qiwsir.github.io']

对list的操作

任何一个行业都有自己的行话,如同古代的强盗,把撤退称之为“扯乎”一样,纵然是一个含义,但是强盗们愿意用他们自己的行业用语,俗称“黑话”。各行各业都如此。这样做的目的我理解有两个,一个是某种保密;另外一个是行外人士显示本行业的门槛,让别人感觉这个行业很高深,从业者有一定水平。

不管怎么,在python和很多高级语言中,都给本来数学角度就是函数的东西,又在不同情况下有不同的称呼,如方法、类等。当然,这种称呼,其实也是为了区分函数的不同功能。

前面在对str进行操作的时候,有一些内置函数,比如s.strip(),这是去掉左右空格的内置函数,也是str的方法。按照一贯制的对称法则,对list也会有一些操作方法。

追加元素

>>> a = ["good","python","I"]   
>>> a
['good', 'python', 'I']
>>> a.append("like")    #向list中添加str类型"like"
>>> a
['good', 'python', 'I', 'like']
>>> a.append(100)      #向list中添加int类型100
>>> a
['good', 'python', 'I', 'like', 100]

官方文档这样描述list.append()方法

list.append(x)
Add an item to the end of the list; equivalent to a[len(a):] = [x].

从以上描述中,以及本部分的标题“追加元素”,是不是能够理解list.append(x)的含义呢?即将新的元素x追加到list的尾部。

列位看官,如果您注意看上面官方文档中的那句话,应该注意到,还有后面半句: equivalent to a[len(a):] = [x],意思是说list.append(x)等效于:a[len(a):]=[x]。这也相当于告诉我们了另外一种追加元素的方法,并且两种方法等效。

>>> a
['good', 'python', 'I', 'like', 100]
>>> a[len(a):]=[3]   #len(a),即得到list的长度,这个长度是指list中的元素个数。
>>> a
['good', 'python', 'I', 'like', 100, 3]
>>> len(a)
6
>>> a[6:]=['xxoo']
>>> a
['good', 'python', 'I', 'like', 100, 3, 'xxoo']

顺便说一下len(),这个是用来获取list,str等类型的数据长度的。在字符串讲解的时候也提到了。

>>> name = 'yeashape'
>>> len(name)    #str的长度,是字符的个数
8
>>> a=[1,2,'a','b'] #list的长度,是元素的个数
>>> len(a)
4
>>> b=['yeashape']  
>>> len(b)
1

下一讲继续list,有容乃大。

Python 相关文章推荐
python中使用urllib2伪造HTTP报头的2个方法
Jul 07 Python
一张图带我们入门Python基础教程
Feb 05 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
pandas pivot_table() 按日期分多列数据的方法
Nov 16 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
对Python 检查文件名是否规范的实例详解
Jun 10 Python
python 绘制拟合曲线并加指定点标识的实现
Jul 10 Python
python将时分秒转换成秒的实例
Dec 07 Python
Pandas时间序列:重采样及频率转换方式
Dec 26 Python
python如何求100以内的素数
May 27 Python
10个python爬虫入门实例(小结)
Nov 01 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
跟老齐学Python之永远强大的函数
Sep 14 #Python
You might like
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
php array_search() 函数使用
2010/04/13 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
PHP curl使用实例
2015/07/02 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
php生成HTML文件的类方法
2019/10/11 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
基于Python的身份证号码自动生成程序
2014/08/15 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
python超时重新请求解决方案
2019/10/21 Python
Python上下文管理器全实例详解
2019/11/12 Python
Python实现自动访问网页的例子
2020/02/21 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
python中pivot()函数基础知识点
2021/01/03 Python
Django url 路由匹配过程详解
2021/01/22 Python
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
先进教师事迹材料
2014/12/16 职场文书
教师节随笔
2015/08/15 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
什么是Python装饰器?如何定义和使用?
2022/04/11 Python