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用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
Python日志模块logging简介
Apr 13 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
TensorFlow saver指定变量的存取
Mar 10 Python
python通过实例讲解反射机制
Oct 17 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
Python PyInstaller库基本使用方法分析
Dec 12 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
Jun 18 Python
Pycharm配置autopep8实现流程解析
Nov 28 Python
python本地文件服务器实例教程
May 02 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
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
python创建和使用字典实例详解
2013/11/01 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
市政施工员自我鉴定
2014/01/15 职场文书
员工生日会策划方案
2014/06/14 职场文书
学位证书委托书
2014/09/30 职场文书
初中生毕业评语
2014/12/29 职场文书
学校党员干部承诺书
2015/05/04 职场文书
上班旷工检讨书
2015/08/15 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
Python爬虫基础初探selenium
2021/05/31 Python
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python