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常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
Python合并字符串的3种方法
May 21 Python
python Flask实现restful api service
Dec 04 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
浅谈python3.x pool.map()方法的实质
Jan 16 Python
python使用Plotly绘图工具绘制气泡图
Apr 01 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
May 28 Python
Django自定义用户登录认证示例代码
Jun 30 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
Python猜数字算法题详解
Mar 01 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在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
对angular4子路由&辅助路由详解
2018/10/09 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
Python 的AES加密与解密实现
2019/07/09 Python
python获取引用对象的个数方式
2019/12/20 Python
Python类如何定义私有变量
2020/02/03 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
品质标语大全
2014/06/21 职场文书
党员对照检查材料
2014/09/22 职场文书
荆州古城导游词
2015/02/06 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL