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递归计算N!的方法
May 05 Python
Python2中的raw_input() 与 input()
Jun 12 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
python斐波那契数列的计算方法
Sep 27 Python
pymongo中聚合查询的使用方法
Mar 22 Python
python async with和async for的使用
Jun 20 Python
python面试题之列表声明实例分析
Jul 08 Python
Django model 中设置联合约束和联合索引的方法
Aug 06 Python
Python 实现自动完成A4标签排版打印功能
Apr 09 Python
keras 自定义loss model.add_loss的使用详解
Jun 22 Python
selenium+超级鹰实现模拟登录12306
Jan 24 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 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
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
node.js中的console用法总结
2014/12/15 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
python web框架学习笔记
2016/05/03 Python
Python装饰器知识点补充
2018/05/28 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
Python imread、newaxis用法详解
2019/11/04 Python
opencv 阈值分割的具体使用
2020/07/08 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
自荐信格式
2013/12/01 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
写给老师的感谢信
2015/01/20 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
2015年推普周活动总结
2015/03/27 职场文书
演讲比赛主持词
2015/06/29 职场文书
企业团队精神心得体会
2016/01/19 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书
辞职信怎么写?
2019/05/21 职场文书