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程序与C程序的结合使用
Apr 07 Python
用于统计项目中代码总行数的Python脚本分享
Apr 21 Python
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
python Spyder界面无法打开的解决方法
Apr 27 Python
Python for循环中的陷阱详解
Jul 13 Python
Python实现注册、登录小程序功能
Sep 21 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
在python3.64中安装pyinstaller库的方法步骤
Jun 02 Python
Python变量格式化输出实现原理解析
Aug 06 Python
Django如何继承AbstractUser扩展字段
Nov 27 Python
python中time、datetime模块的使用
Dec 14 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生成便于打印的网页
2006/10/09 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
ini_set的用法介绍
2014/01/07 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
javascript实现一个简单的弹出窗
2016/02/22 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
vue源码入口文件分析(推荐)
2018/01/30 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
Python 文件读写操作实例详解
2014/03/12 Python
python正则分析nginx的访问日志
2017/01/17 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
Numpy之reshape()使用详解
2019/12/26 Python
Python使用type动态创建类操作示例
2020/02/29 Python
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
鸡毛信观后感
2015/06/11 职场文书
高温慰问简报
2015/07/21 职场文书
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js