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的装饰器使用详解
Jun 26 Python
Python工程师面试必备25条知识点
Jan 17 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
pytorch使用Variable实现线性回归
May 21 Python
django页面跳转问题及注意事项
Jul 18 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
Python读取csv文件实例解析
Dec 30 Python
pycharm激活方法到2099年(激活流程)
Sep 22 Python
利用python清除移动硬盘中的临时文件
Oct 28 Python
python常量折叠基础知识点讲解
Feb 28 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
Zerg剧情介绍
2020/03/14 星际争霸
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
cument.execCommand()用法深入理解
2012/12/04 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
nodejs实现的一个简单聊天室功能分享
2014/12/06 NodeJs
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
2013届毕业生求职信范文
2013/11/20 职场文书
初中学生期末评语
2014/04/24 职场文书
医学求职自荐信
2014/06/21 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
趣味运动会广播稿
2014/09/13 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
公司开会通知
2015/04/20 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
Go语言中break label与goto label的区别
2021/04/28 Golang
只用Python就可以制作的简单词云
2021/06/07 Python
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers