Python序列之list和tuple常用方法以及注意事项


Posted in Python onJanuary 09, 2015

sequence 序列

sequence(序列)是一组有顺序的对象的集合。序列可以包含一个或多个元素,也可以没有任何元素。

我们之前所说的基本数据类型,都可以作为序列的对象。对象还可以是另一个序列。序列有两种:list (表) 和 tuple(元组) 。
list和tuple的主要区别在于,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更。

List

获得list元素的个数:

>>> lst=['更新慢','python',5.44,False]

>>> len(lst)

4

引用访问时索引是从0开始,注意不要越界:

>>> lst[0]

'更新慢'

>>> lst[1]

'python'

>>> lst[2]

5.44

>>> lst[3]

False

>>> lst[4]

Traceback (most recent call last):

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

    lst[4]

IndexError: list index out of range

用-1做索引,直接获取最后一个元素:

>>> lst[-1]

False

>>> lst[-2]

5.44

>>> lst[-3]

'python'

>>> lst[-4]

'更新慢'

>>> lst[-5]

Traceback (most recent call last):

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

    lst[-5]

IndexError: list index out of range

因为list是一个可变的有序表,所以,可以往list末尾追加元素:

>>> lst.append('加我一个')

>>> lst

['更新慢', 'python', 5.44, False, '加我一个']

一次追加多个元素:

>>> lst.extend(['A','B','C'])

>>> lst

['更新慢', 'python', 5.44, False, '加我一个', 'A', 'B', 'C']

要删除list末尾的元素,用pop()方法:

>>> lst.pop()

'C'

>>> lst

['更新慢', 'python', 5.44, False, '加我一个', 'A', 'B']

删除指定位置的元素,用pop(i)方法,其中i是索引位置:

>>> lst.pop(0)

'更新慢'

>>> lst

['python', 5.44, False, '加我一个', 'A']

list元素替换,可以直接赋值给对应的索引位置:

>>> lst[-1]='100'

>>> lst

['python', 5.44, False, '加我一个', '100']

list元素也可以是另一个list,插入的那个list只算一个元素:

>>> lst.append(lst1)

>>> lst

['python', 5.44, False, '加我一个', '100', ['666', 'QWER']]

>>> len(lst)

6

Tuple

Tuple一旦初始化就不能修改。字符串是一种特殊的元素,因此可以执行元组的相关操作。

>>> str='该睡觉了,晚安!'

>>> print (str[:7])

该睡觉了,晚安

不可变的tuple意义就在于因为不可变,所以代码更安全。如果可能,能用tuple就尽量用tuple。

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

>>> tuple[0]=6

Traceback (most recent call last):

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

    tuple[0]=6

TypeError: 'tuple' object does not support item assignment

定义一个空tuple:

>>> tuple1=()

>>> tuple1

()

注意,要定义一个只有1个元素的tuple:
>>> tuple2=(666,)

>>> tuple2

(666,)              #正确的

>>> tuple3=(666)

>>> tuple3

666                 #错误的,只定义了666这个数

注意:Tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。

>>> l=['CCTV-5','HI']

>>> tuple4=('UFO','HACK',l)

>>> tuple4

('UFO', 'HACK', ['CCTV-5', 'HI'])

>>> l[1]='我先变一下'

>>> tuple4

('UFO', 'HACK', ['CCTV-5', '我先变一下'])

所以尽量避免这种套用。

当日小结

掌握List和Tuple的常用方法以及注意事项。

Python 相关文章推荐
Python 除法小技巧
Sep 06 Python
python多进程共享变量
Apr 06 Python
Python函数式编程
Jul 20 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
在CMD命令行中运行python脚本的方法
May 12 Python
Python开发的十个小贴士和技巧及长常犯错误
Sep 27 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
Python整数对象实现原理详解
Jul 01 Python
python redis连接 有序集合去重的代码
Aug 04 Python
opencv resize图片为正方形尺寸的实现方法
Dec 26 Python
详解向scrapy中的spider传递参数的几种方法(2种)
Sep 28 Python
python的setattr函数实例用法
Dec 16 Python
Python中的生成器和yield详细介绍
Jan 09 #Python
Python中实现对list做减法操作介绍
Jan 09 #Python
python base64 decode incorrect padding错误解决方法
Jan 08 #Python
Python中字符编码简介、方法及使用建议
Jan 08 #Python
Python实现一个简单的MySQL类
Jan 07 #Python
python实现多线程暴力破解登陆路由器功能代码分享
Jan 04 #Python
Python中对列表排序实例
Jan 04 #Python
You might like
PHP实现MySQL更新记录的代码
2008/06/07 PHP
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
Javascript 面向对象 命名空间
2010/05/13 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
详解PyCharm配置Anaconda的艰难心路历程
2018/08/13 Python
python实现朴素贝叶斯算法
2018/11/19 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
通过python检测字符串的字母
2020/02/18 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
幼师专业求职推荐信
2013/11/08 职场文书
大型会议策划方案
2014/05/17 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
经费申请报告范文
2015/05/18 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
中秋节随笔
2015/08/15 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript
python 详解turtle画爱心代码
2022/02/15 Python
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电