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爬虫之HTTP异常处理
Nov 05 Python
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
和孩子一起学习python之变量命名规则
May 27 Python
微信公众号token验证失败解决方案
Jul 22 Python
python利用re,bs4,requests模块获取股票数据
Jul 29 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
tf.concat中axis的含义与使用详解
Feb 07 Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 Python
Python字符串查找基本操作代码案例
Oct 27 Python
10张动图学会python循环与递归问题
Feb 06 Python
Python基础之元类详解
Apr 29 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
域名查询代码公布
2006/10/09 PHP
PHP中的cookie
2006/11/26 PHP
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
禁止js文件缓存的代码
2010/04/09 Javascript
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
详解Vue整合axios的实例代码
2017/06/21 Javascript
详解在React里使用"Vuex"
2018/04/02 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
python赋值操作方法分享
2013/03/23 Python
Python数据操作方法封装类实例
2017/06/23 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
财务副总经理工作职责
2013/11/25 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
秋冬农业生产标语
2014/10/09 职场文书
车间质检员岗位职责
2015/04/08 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
合同纠纷调解书
2015/05/20 职场文书
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript