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操作redis的方法
Jul 07 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
PyQt5每天必学之单行文本框
Apr 19 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
python3+PyQt5使用数据库窗口视图
Apr 24 Python
python遍历小写英文字母的方法
Jan 02 Python
python使用 __init__初始化操作简单示例
Sep 26 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
Python实现对adb命令封装
Mar 06 Python
Django DRF认证组件流程实现原理详解
Aug 17 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
QueryPath PHP 中的jQuery
2010/04/11 PHP
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
Python中使用PDB库调试程序
2015/04/05 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
python3爬取数据至mysql的方法
2018/06/26 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
造型师求职自荐信
2013/09/27 职场文书
计算机操作自荐信
2013/12/07 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
幼儿教师培训感言
2014/03/08 职场文书
岗位职责风险点
2014/03/12 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
Go语言特点及基本数据类型使用详解
2022/03/21 Golang