Python入门篇之列表和元组


Posted in Python onOctober 17, 2014

列表和元组的主要区别在于,列表可以修改,元组则不能。一般情况下,在几乎所有的情况下列表都可以代替元组

例如:使用序列可以表示数据库中一个人的信息(姓名,年龄)

>>> edward=['Edward Gumby',42]

序列还可以包含其他序列

>>> edward=['Edward Gumby',42]

>>> john=['John Smith',50]

>>> database=[edward,john]

>>> database

[['Edward Gumby', 42], ['John Smith', 50]]

通用序列操作
所有的序列操作都可以进行某些特定的操作。这些操作包括:索引、分片、加、乘以及检查某个元素是否属于序列的成员

索引

序列中的所有元素都是有编号的--从0开始递增。这些元素可以通过编号分别访问,如下:

>>> greeting='hello'

>>> greeting[0]

'h'

>>> greeting[-1]

'o'

>>> 'hello'[1]

'e'

如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作,例如:

>>> fourth=raw_input('Year:')[3]

Year:2005

>>> fourth

'5'

 View Code

 

运行结果:
>>> 

Year: 1974

Month(1-12): 8

Day(1-31): 16

August 16th, 1974

分片

使用分片操作来访问一定范围内的元素,分片通过冒号相隔的两个索引来实现:

>>> tag='<a herf="http://www.python.org">Python web site</a>'

>>> tag[9:30]

'http://www.python.org'

>>> tag[32:-4]

'Python web site'

第一个索引是需要提取部分的第一个元素的编号,而最后的索引则是分片之后剩下部分的第一个元素的编号

>>> numbers=[1,2,3,4,5,6,7,8,9,10]

>>> numbers[3:6]

[4, 5, 6]

>>> numbers[0:1]

[1]

1、优雅的捷径

访问最后的三个元素,当然可以进行显示的操作

>>> numbers[7:10]

[8, 9, 10]

>>> numbers[-3:-1]

[8, 9]

>>> numbers[-3:0]

[]

>>> numbers[-3:]

[8, 9, 10]

只有最后一个分片完成任务,这种方法同样适用序列开始的元素:

>>> numbers[:3]

[1, 2, 3]

实际上,如果需要复制整个序列,可以将两个索引都置空:

>>> numbers[:]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2、更大的步长

分片还有第三个参数--步长,通常都是隐式设置的,在一般情况下,步长是1,不能为0,但是可以为负数,即从右往左提取元素

 测试代码
序列相加

通过使用加号可以进行序列的连接操作:

>>> [1,2,3]+[4,5,6]

[1, 2, 3, 4, 5, 6]

>>> 'hello.'+'world!'

'hello.world!'

>>> [1,2,3]+'world!'
Traceback (most recent call last):

  File "<pyshell#107>", line 1, in <module>

    [1,2,3]+'world!'

TypeError: can only concatenate list (not "str") to list

乘法

用数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复x次

>>> 'python'*5

'pythonpythonpythonpythonpython'

>>> [42]*10

[42, 42, 42, 42, 42, 42, 42, 42, 42, 42]

成员资格

为了检查一个值是否在序列中,可以使用in运算符,该运算符返回布尔值

>>> permissions='rw'

>>> 'w'in permissions

True

>>> 'x'in permissions

False

Enter your name: mlh

True

>>> subject='$$$ Get rich now!!! $$$'

>>> '$$$'in subject

True

长度、最小值和最大值

内建函数len、min、max,len函数返回序列中所包含元素的数量,min和max函数分别返回序列中最大和最小的元素

>>> numbers=[100,34,678]

>>> len(numbers)

3

>>> max(numbers)

678

>>> min(numbers)

34

>>> max(2,3)

3

>>> min(9,3,2,5)

2

list函数

list函数可以根据字符串创建列表

>>> list('hello')

['h', 'e', 'l', 'l', 'o']

基本列表操作:
1、改变列表:元素赋值

使用索引标记来为某个特定的、位置明确的元素赋值:

>>> x=[1,1,1]

>>> x[1]=2

>>> x

[1, 2, 1]

2、删除元素

使用del语句来实现:

>>> names=['Alice','Beth','Ceil','Dee-Dee','Earl']

>>> del names[2]

>>> names

['Alice', 'Beth', 'Dee-Dee', 'Earl']

注意:Cecil是彻底删除,列表长度也从5变为4

3、分片赋值

 View Code
列表方法:

方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者其他类型的对象,方法的调用方式:对象.方法(参数)

1、append

append方法用于在列表末尾追加新的对象:

>>> lst=[1,2,3]

>>> lst.append(4)

>>> lst

[1, 2, 3, 4]

2、cout

count方法用于统计某个元素在列表中出现的次数:

>>> ['to','be','or','not','to','be'].count('to')

2

>>> x=[[1,2],1,1,[2,1,[1,2]]]

>>> x.count(1)

2

>>> x.count([1,2])

1

3、extend

extend方法可以在列表的末尾一次性的追加另一个序列中的多个值

>>> a=[1,2,3]

>>> b=[4,5,6]

>>> a.extend(b)

>>> a

[1, 2, 3, 4, 5, 6]

>>> #区别连接操作

>>> a=[1,2,3]

>>> b=[4,5,6]

>>> a+b

[1, 2, 3, 4, 5, 6]

>>> a

[1, 2, 3]

4、index

index方法用于从列表中找出某一个匹配项的索引位置:

>>> knights=['we','are','the','knigths','who','say','ni']

>>> knights.index('who')

4

>>> knights=['we','are','the','knigths','who','say','ni']

>>> knights.index('herring')
Traceback (most recent call last):

  File "<pyshell#184>", line 1, in <module>

    knights.index('herring')

ValueError: 'herring' is not in list

没有成功找到会引发异常

 5、insert

insert方法用于将对象插入到列表中:

>>> numbers=[1,2,3,5,6,7]

>>> numbers.insert(3,'four')

>>> numbers

[1, 2, 3, 'four', 5, 6, 7]

>>> #extend方法一样,insert方法的操作也可以用分片赋值来实现

>>> numbers=[1,2,3,5,6,7]

>>> numbers[3:3]=['four']

>>> numbers

[1, 2, 3, 'four', 5, 6, 7]

6、pop

pop方法会移除列表中的一个元素(默认是最后一个),并且返回该元素的值:

>>> x=[1,2,3]

>>> x.pop()

3

>>> x

[1, 2]

>>> x.pop(0)

1

>>> x

[2]

注意:pop方法是唯一一个既能修改列表又返回元素值(除了None)的列表方法

7、remove

remove方法用于移除列表中某个值的第一个匹配项:

>>> x=['to','be','or','not','to','be']

>>> x.remove('be')

>>> x

['to', 'or', 'not', 'to', 'be']

>>> x.remove('bee')
Traceback (most recent call last):

  File "<pyshell#19>", line 1, in <module>

    x.remove('bee')

ValueError: list.remove(x): x not in list

8、reverse

reverse方法将列表中的元素反向存放,该方法也改变了列表但不返回值

>>> x=[1,2,3]

>>> x.reverse()

>>> x

[3, 2, 1]

9、sort

sort方法用于在原位置对列表进行排序,改变原来的列表,从而让其中的元素按照一定的

>>> x=[4,6,2,1,7,9]

>>> x.sort()

>>> x

[1, 2, 4, 6, 7, 9]

 元组
元组与列表一样,也是一种序列,唯一不同的是元组不可以修改:

任意对象的有序集合
通过偏移存储
属于不可变序列类型
固定长度、异构、任意嵌套
对象引用数组
使用逗号分隔了一些值,就自动创建了一个元组:

>>> 1,2,3

(1, 2, 3)

>>> ()

()

>>> 42

42

>>> 42,

(42,)

>>> (42,)

(42,)

元组也是(大部分时候是)通过圆括号括起来的,空元组可以用没有包含内容的两个圆括号来表示:

tuple函数

tuple函数的功能和list函数基本上是一样的:以一个序列作为参数并把它转换为元组。

>>> tuple([1,2,3])

(1, 2, 3)

>>> tuple('abc')

('a', 'b', 'c')

>>> tuple((1,2,3))

(1, 2, 3)

列表与元组的相互转化:

>>> T=('cc','aa','dd','bb')

>>> tmp=list(T)

>>> tmp

['cc', 'aa', 'dd', 'bb']

>>> T=tuple(tmp)

>>> T

('cc', 'aa', 'dd', 'bb')
Python 相关文章推荐
python正则表达式中的括号匹配问题
Dec 14 Python
在Python中使用base64模块处理字符编码的教程
Apr 28 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
python简单实现操作Mysql数据库
Jan 29 Python
使用Python横向合并excel文件的实例
Dec 11 Python
关于numpy中eye和identity的区别详解
Nov 29 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
TensorFlow:将ckpt文件固化成pb文件教程
Feb 11 Python
QML实现钟表效果
Jun 02 Python
在django中实现choices字段获取对应字段值
Jul 12 Python
聊聊python中的循环遍历
Sep 07 Python
Python tkinter制作单机五子棋游戏
Sep 14 Python
Python入门篇之对象类型
Oct 17 #Python
Python入门篇之编程习惯与特点
Oct 17 #Python
python中正则表达式的使用详解
Oct 17 #Python
基于python编写的微博应用
Oct 17 #Python
python连接oracle数据库实例
Oct 17 #Python
Python 检查数组元素是否存在类似PHP isset()方法
Oct 14 #Python
跟老齐学Python之Import 模块
Oct 13 #Python
You might like
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
图片完美缩放
2006/09/07 Javascript
DHTML Slide Show script图片轮换
2008/03/03 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
js实现简单的验证码
2015/12/25 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
2016/05/18 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
2018/04/13 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
详解Python pygame安装过程笔记
2017/06/05 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
Python装饰器用法实例总结
2018/05/26 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
python求质数的3种方法
2018/09/28 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
python名片管理系统开发
2020/06/18 Python
python+requests实现接口测试的完整步骤
2020/10/27 Python
教师考察材料范文
2014/06/03 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
Mysql 8.x 创建用户以及授予权限的操作记录
2022/04/18 MySQL