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用fork来创建子进程注意事项
Jul 03 Python
Python中用函数作为返回值和实现闭包的教程
Apr 27 Python
简单了解Python下用于监视文件系统的pyinotify包
Nov 13 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
python字典操作实例详解
Nov 16 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
python 实现调用子文件下的模块方法
Dec 07 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
基于Django快速集成Echarts代码示例
Dec 01 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 Python
学会Python数据可视化必须尝试这7个库
Jun 16 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
JS实现标签页切换效果
2017/05/04 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
Python实现程序判断季节的代码示例
2019/01/28 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
美国知名生活购物网站:Goop
2017/11/03 全球购物
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
儿科护士自我鉴定
2013/10/14 职场文书
数据员岗位职责
2013/11/19 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
员工教育培训协议书
2014/09/27 职场文书
义诊活动总结
2015/02/04 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
物业管理交接协议书
2016/03/24 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书