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中Random和Math模块学习笔记
May 18 Python
django在接受post请求时显示403forbidden实例解析
Jan 25 Python
Django中Forms的使用代码解析
Feb 10 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
Python中的正则表达式与JSON数据交换格式
Jul 03 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
Flask框架路由和视图用法实例分析
Nov 07 Python
详解Python Opencv和PIL读取图像文件的差别
Dec 27 Python
在python中修改.properties文件的操作
Apr 08 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
keras得到每层的系数方式
Jun 15 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防注入安全代码
2008/04/09 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
python中global与nonlocal比较
2014/11/21 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
python调用百度语音REST API
2018/08/30 Python
python爬虫可以爬什么
2020/06/16 Python
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
专科毕业生求职简历的自我评价
2013/10/12 职场文书
售后服务科岗位职责范文
2013/11/13 职场文书
QA工程师岗位职责
2013/11/20 职场文书
求职推荐信范文
2013/12/01 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
考研导师推荐信范文
2015/03/27 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
Nginx缓存设置案例详解
2021/09/15 Servers
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python