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的Tornado框架中的日志的方法
May 02 Python
Python的GUI框架PySide的安装配置教程
Feb 16 Python
Django小白教程之Django用户注册与登录
Apr 22 Python
python executemany的使用及注意事项
Mar 13 Python
Python之列表的插入&amp;替换修改方法
Jun 28 Python
Python rstrip()方法实例详解
Nov 11 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
Jul 14 Python
Python logging模块原理解析及应用
Aug 13 Python
python 实现逻辑回归
Dec 30 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 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
德生PL660的电路分析和打磨
2021/03/02 无线电
用PHP和ACCESS写聊天室(一)
2006/10/09 PHP
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
javascript与webservice的通信实现代码
2010/12/25 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
python实现二维插值的三维显示
2018/12/17 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
python ETL工具 pyetl
2020/06/07 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
荷兰手表网站:Watch2Day
2018/07/02 全球购物
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
简历自我评价怎么写呢?
2014/01/06 职场文书
七夕情人节促销方案
2014/06/07 职场文书
捐款活动总结
2014/08/27 职场文书
民事和解协议书格式
2014/11/29 职场文书
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers