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爬取网站数据保存使用的方法
Nov 20 Python
python实现的DES加密算法和3DES加密算法实例
Jun 03 Python
在cmd命令行里进入和退出Python程序的方法
May 12 Python
django初始化数据库的实例
May 27 Python
Python运维之获取系统CPU信息的实现方法
Jun 11 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
python 格式化输出百分号的方法
Jan 20 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
Dec 14 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 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
德生PL330测评
2021/03/02 无线电
一个程序下载的管理程序(一)
2006/10/09 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
javascript 鼠标滚轮事件
2009/04/09 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
JQUERY获取form表单值的代码
2010/07/17 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
tornado 多进程模式解析
2018/01/15 Python
python通过实例讲解反射机制
2019/10/17 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
材料物理专业求职信
2014/09/01 职场文书
单位介绍信格式
2015/01/31 职场文书
2015年人事科工作总结
2015/04/28 职场文书
网络妈妈观后感
2015/06/08 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书