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中的lstrip()方法使用简介
May 19 Python
Python使用Supervisor来管理进程的方法
May 28 Python
Python使用PIL库实现验证码图片的方法
Mar 11 Python
python 类对象和实例对象动态添加方法(分享)
Dec 31 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
从django的中间件直接返回请求的方法
May 30 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
在matplotlib的图中设置中文标签的方法
Dec 13 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
python程序文件扩展名知识点详解
Feb 27 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
Django创建一个后台的基本步骤记录
Oct 02 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
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
vue.js路由跳转详解
2017/08/28 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
详解Nodejs内存治理
2018/05/13 NodeJs
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
质检的岗位职责
2013/11/17 职场文书
幼儿园美术教学反思
2014/01/31 职场文书
服务标语口号
2014/07/01 职场文书
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
python3操作redis实现List列表实例
2021/08/04 Python
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA