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入门及进阶笔记 Python 内置函数小结
Aug 09 Python
Python实现的爬虫功能代码
Jun 24 Python
Python时间的精准正则匹配方法分析
Aug 17 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
python DataFrame 取差集实例
Jan 30 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
Pyspark获取并处理RDD数据代码实例
Mar 27 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
Python unittest如何生成HTMLTestRunner模块
Sep 08 Python
Python加载数据的5种不同方式(收藏)
Nov 13 Python
如何使用Python实现一个简易的ORM模型
May 12 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
apache配置虚拟主机的方法详解
2013/06/17 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
javascript document.referrer 用法
2009/04/30 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
Python  连接字符串(join %)
2008/09/06 Python
Python读写Json涉及到中文的处理方法
2016/09/12 Python
Python 将pdf转成图片的方法
2018/04/23 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
如何提高python 中for循环的效率
2020/04/15 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
财务管理专业推荐信
2013/11/19 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
2015年度保密工作总结
2015/04/24 职场文书
移除Selenium中window.navigator.webdriver值
2022/06/10 Python
virtualenv隔离Python环境的问题解析
2022/06/21 Python