1. 元组是什么

元组也是序列的一种,元组与列表非常相近,元组是一种不可变类型。

1.1 创建元组

>>> t = tuple()
>>> type(t)
<type 'tuple'>
>>> t1 = ()
>>> t1
()
>>> type(t1)
<type 'tuple'>
>>> t = (1)
>>> type(t)
<type 'int'>
>>> t = (1,)
>>> type(t)
<type 'tuple'>

1.2 访问元组中的值

与列表类似,如:

>>> t = tuple('furzoom')
>>> print t
('f', 'u', 'r', 'z', 'o', 'o', 'm')
>>> t[1]
'u'
>>> t[1:3]
('u', 'r')

1.3 更新元组中的元素

由于元组是不可变类型,所以不支持直接修改元组中的元素,可以通过类型对字符串的操作实现,将元组切片,然后组合,如:

>>> t = tuple('furzoom')
>>> t[1] = 'a'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> t = t[:4] + tuple('uu') + t[-1:]
>>> t
('f', 'u', 'r', 'z', 'u', 'u', 'm')

1.4 删除元组中的元素或者元组本身

>>> t = tuple('furzoom')
>>> t = t[:4] + t[-1:]
>>> t
('f', 'u', 'r', 'z', 'm')
>>> del t
>>> t
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 't' is not defined

2. 元组相关操作

支持比较运算、切片[]或者[:]、in, not in、连接操作符+、重复操作。

3. 内建函数对元组的支持

3.1 序列类型函数

支持序列的内建函数。

  • cmp()
  • len()
  • max()
  • min()
  • sorted()
  • reversed()
  • enumerate()
  • zip()
  • sum()
  • list()
  • tuple()

其中,cmp()函数比较的原则与对list的比较是一致的,详见Python序列——列表

3.2 元组内建函数

由于元组是不可变类型,其支持的操作比列表少了许多。

  • tuple.count(x)
  • tuple.index(x[, start[, end]])
>>> t = tuple('furzoom')
>>> t.count('o')
2
>>> t.index('o')
4

4. 元组的特殊性

从应用层面来讲,不可变类型意味着什么?在2个标准不可变类型里面——数字、字符串、元组——元组是受影响最大的。

由于元组是一种容器,有时只是想改变其中的某个元素,但这是不可以的。

利用元组的的不可变性,把数据传递给一个不了解的API时,可以确保数据不会被修改。要操作从函数返回的元组时,可能通过将其转换为列表进行操作。

元组由于不可变,可以做为字典的关键字。

Python序列——元组的更多相关文章

  1. python 序列:字符串、列表、元组

    python 序列:字符串.列表.元组   序列:包含一定顺序排列的对象的一个结构 内建函数:str() list() tuple() 可以使用str(obj)可以把对象obj转换成字符串 list( ...

  2. Python序列之元组 (tuple)

    作者博文地址:http://www.cnblogs.com/spiritman/ Python的元组与列表类似,同样可通过索引访问,支持异构,任意嵌套.不同之处在于元组的元素不能修改.元组使用小括号, ...

  3. python序列

    序列基础 序列:python包含6种内建的序列,常用的有:列表.元组.字符串.列表可以修改,元组和字符串不能修改. 索引:从0开始递增,通过索引获取元素:可使用负数索引,从右至左.最后1个元素的位置编 ...

  4. [Python笔记][第二章Python序列-tuple,dict,set]

    2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...

  5. [python笔记][第二章Python序列-list]

    2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...

  6. python学习笔记:python序列

    python序列包括字符串.列表和元组三部分,下面先总的说一下python序列共有的一些操作符和内建函数. 一.python序列 序列类型操作符 标准类型的操作符一般都能适用于所有的序列类型,这里说一 ...

  7. Python序列类型

    Python序列类型 序列:字符.列表.元组 所有序列都支持迭代 序列表示索引为非负整数的有序对象集合 字符和元组属于不可变序列,列表可变 1)字符 字符串字面量:把文本放入单引号.双引号或三引号中: ...

  8. Python序列结构

    python中常用的序列结构由列表.元组.字典.字符串.集合等,列表.元组.字符串等有序序列以及range对象均支持双向索引 是否有序 序列结构 是否是可变序列 有序序列 元组 不可变序列 有序序列 ...

  9. python序列元素引用容易出错的地方

    python序列分列表和元组,不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号.元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可.举个简单的例子,a1是一个元组,a2是一个列表 ...

随机推荐

  1. Windows Builder(图形化界面的利器)For Eclipse 3.7

    工欲善其事,必先利其器——孔子(春秋)<论语·卫灵公> 今天闲逛论坛的时候,发现了Eclipse 的很好的插件,是关于做图形界面的. 如果想做桌面应用软件,交互界面有点复杂的时候,自己手动 ...

  2. Codeforces 149D Coloring Brackets(树型DP)

    题目链接 Coloring Brackets 考虑树型DP.(我参考了Q巨的代码还是略不理解……) 首先在序列的最外面加一对括号.预处理出DFS树. 每个点有9中状态.假设0位不涂色,1为涂红色,2为 ...

  3. [转载][FPGA]Quartus代码保护-生成网表文件

    0. 简介 当项目过程中,不想给甲方源码时,该如何?我们可以用网表文件qxp或者vqm对资源进行保护. 下面讲解这两个文件的具体生成步骤: 1. 基本概念 QuartusII的qxp文件为Quartu ...

  4. 第5章 Spring Boot 功能

    Spring Boot 功能 本节将会介绍Spring Boot的一些细节. 在这里,您可以了解您将要使用和自定义的主要功能. 如果还没有准备好,您可能需要阅读第二部分“入门指南”和第三部分“使用 S ...

  5. Ubuntu 16.04下使用Wine安装文件比对工具Beyond Compare 4

    说明: 1.使用的Wine版本是深度出品(Deepin),已经精简了很多没用的配置,使启动能非常快,占用资源小. 2.关于没有.wine文件夹的解决方法:在命令行上运行winecfg: 下载: (链接 ...

  6. ui develop

    https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/DesigningaUserInt ...

  7. iOS -- MBProgressHUB

    高级: http://www.jianshu.com/p/485b8d75ccd4 //只有小菊花 - (void)indeterminateExample { // Show the HUD on ...

  8. jmeter源码编译

    转载:http://blog.csdn.net/wanglha/article/details/42004943 一.下载源码 git clone git://github.com/apache/jm ...

  9. iOS开发 CGBitmapContextCreate

    最近项目中,需要对图片进行各种操作. 使用CGBitmapContextCreate 创建位图上下文. CG_EXTERN CGContextRefCGBitmapContextCreate(void ...

  10. 仰视源代码,实现strcpy

    编程实现字符串的拷贝,不能用库函数. 一般的刚開始学习的人也许能写出来.可是要写的非常完美那就须要基本功了. char* strcpy(char* strDest, const char* strSr ...