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中字符串前面加r的作用
Jun 04 Python
Python机器学习之决策树算法
Dec 22 Python
快速了解Python相对导入
Jan 12 Python
对numpy中数组转置的求解以及向量内积计算方法
Oct 31 Python
python pygame模块编写飞机大战
Nov 20 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 Python
Python Flask 搭建微信小程序后台详解
May 06 Python
python使用minimax算法实现五子棋
Jul 29 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 Python
Python通用唯一标识符uuid模块使用案例
Sep 10 Python
Python实现制作销售数据可视化看板详解
Nov 27 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中的HashTable结构详解
2013/06/13 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
超清晰的document对象详解
2007/02/27 Javascript
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
python实现桌面壁纸切换功能
2019/01/21 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
应届生法律求职信
2013/10/22 职场文书
2014年技术员工作总结
2014/11/18 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
学会感恩主题班会
2015/08/12 职场文书
2016年清明节寄语
2015/12/04 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
Python时间操作之pytz模块使用详解
2022/06/14 Python