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实现根据指定端口探测服务器/模块部署的方法
Aug 25 Python
python实现udp数据报传输的方法
Sep 26 Python
Python求导数的方法
May 09 Python
浅谈Python实现2种文件复制的方法
Jan 19 Python
Python中的pack和unpack的使用
Mar 12 Python
对TensorFlow的assign赋值用法详解
Jul 30 Python
Flask框架工厂函数用法实例分析
May 25 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
Python函数的默认参数设计示例详解
Dec 01 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 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
一个SQL管理员的web接口
2006/10/09 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
详解vue中axios的封装
2018/07/18 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
Pycharm更换python解释器的方法
2018/10/29 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
Python流程控制 while循环实现解析
2019/09/02 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
Viking比利时:购买办公用品
2019/10/30 全球购物
AJax面试题
2014/11/25 面试题
高中自我鉴定
2013/12/20 职场文书
商场消防管理制度
2014/01/12 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
结婚典礼主持词
2015/06/29 职场文书