python基础教程之元组操作使用详解


Posted in Python onMarch 25, 2014

简介

tuple

1.元组是以圆括号“()”包围的数据集合,不同成员以“,”分隔。通过下标进行访问

2.不可变序列,可以看做不可变的列表,与列表不同:元组中数据一旦确立就不能改变(所以没有类似列表的增删改操作,只有基本序列操作)

3.支持任意类型,任意嵌套以及常见的序列操作

4.元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候,即被使用的元组的值不会改变

声明及使用

t = ()  #空元组
t =(1,)  #单个元素元组,注意逗号必须
t =(1,2,3)

1 in t #判断
2 not in t
#其他同序列基本操作:分片,索引
print t[0]
print t[-1]
print t[:2]
#不会对原来元组造成影响
print t+(4,5)  #返回新元组(1,2,3,4,5)
print t * 2    #(1,2,3,1,2,3)
t.index(1)
t.count(1)
#列表元组转换
l = [1,2,3]
lt = tuple(l)
tl = list(lt)
lt_sorted = sorted(l)  #对元组进行排序,返回是列表
#字符串转元组(得到字符元组序列)
print tuple('hello)   #('h','e','l','l','o')
tuple没有append/extend/remove/pop等增删改操作tuple没有find

查看帮助

help(tuple)

用途

1.赋值

t = 1,2,3   #等价 t = (1, 2, 3)
x, y, z = t   #序列拆封,要求左侧变量数目和右侧序列长度相等

2.函数多个返回值

def test():
    return (1,2)
x, y = test()

3.传参[强制不改变原始序列]

def print_list(l):
    t = tuple(l)   #或者t = l[:]
    dosomething()

4.字符串格式化

print '%s is %s years old' % ('tom', 20)

5.作为字典的key

优点
1.性能

tuple比列表操作速度快

若需要定义一个常量集,或者是只读序列,唯一的操作是不断遍历之,使用tuple代替list

>>> a = tuple(range(1000))
>>> b = range(1000)
>>> def test_t():
...     for i in a:
...             pass
...
>>> def test_l():
...     for i in b:
...             pass
...
>>> from timeit import Timer
>>> at = Timer("test_t()", "from __main__ import test_t")
>>> bt = Timer("test_l()", "from __main__ import test_l")

简单测试

>>> at.repeat(3, 100000)
[1.526214838027954, 1.5191287994384766, 1.5181210041046143]
>>> bt.repeat(3, 100000)
[1.5545141696929932, 1.557785987854004, 1.5511009693145752]

2.不可变性

对不需要的数据进行“写保护”,使代码更加安全

不可变性,若在程序中以列表形式传递对象集合,可能在任何地方被改变,使用元组,则不能

不可变性只适用于元组本身顶层而非其内容,例如元组内部的列表可以修改

l = [1,2,3]
t = (1,2,l)
l.append(4)

不可变性提供了某种完整性,规范化,确保不会被修改,保持某种固定关系

修改的方法

tuple -> list -> tuple
Python 相关文章推荐
python基于右递归解决八皇后问题的方法
May 25 Python
详解python3实现的web端json通信协议
Dec 29 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
Oct 11 Python
对python pandas读取剪贴板内容的方法详解
Jan 24 Python
python日志logging模块使用方法分析
May 23 Python
Selenium基于PIL实现拼接滚动截图
Apr 10 Python
python代码区分大小写吗
Jun 17 Python
django序列化时使用外键的真实值操作
Jul 15 Python
Window10上Tensorflow的安装(CPU和GPU版本)
Dec 15 Python
python 利用panda 实现列联表(交叉表)
Feb 06 Python
一篇文章带你了解Python和Java的正则表达式对比
Sep 15 Python
python基础教程之简单入门说明(变量和控制语言使用方法)
Mar 25 #Python
python使用循环实现批量创建文件夹示例
Mar 25 #Python
python实现图片批量剪切示例
Mar 25 #Python
使用python实现strcmp函数功能示例
Mar 25 #Python
python读写ini文件示例(python读写文件)
Mar 25 #Python
python判断windows隐藏文件的方法
Mar 21 #Python
python解析中国天气网的天气数据
Mar 21 #Python
You might like
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
PHP+javascript模拟Matrix画面
2006/10/09 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
jQuery的学习步骤
2011/02/23 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python中黄金分割法实现方法
2015/05/06 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
python实现log日志的示例代码
2018/04/28 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
python读取指定字节长度的文本方法
2019/08/27 Python
Keras自定义IOU方式
2020/06/10 Python
Python用来做Web开发的优势有哪些
2020/08/05 Python
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
HTML文本属性&颜色控制属性的实现
2019/12/17 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
英语师范专业毕业生自荐信
2013/09/21 职场文书
求职信范文怎么写
2014/01/29 职场文书
病假条格式范文
2015/08/17 职场文书
Fluentd搭建日志收集服务
2022/09/23 Servers