一:元组:

  1,简单介绍:元组由简单的对象组构成。元组与列表非常类似,只不过元组不能在原处修改(它们)是不可变的,并且通常写成圆括号中的一系列项。虽然元组不支持任何方法调用,但元组具有列表的大多数属性。并且它的大部分执行操作在介绍字符串列表的时候我们就已经学过了,在这里学起来就比较简单了。

  2,元组的特点概述:

    a)任意对象的有序集合:元组是一个位置有序的对象的集合。与列表相同,可以嵌入到任何类别的对象中。

    b) 通过偏移存取:它们支持所有基于偏移的操作。例如,索引和分片。

    c) 属于不可变序列类型:

    d) 固定长度、异构、任意嵌套:元组可以包含其他的复合对象(例如,列表、字典和其他元组等),因此支持嵌套。

    e) 对象引用的数组: 与列表类似,元组最好看作是对象引用的数组。元组存储指向其他对象的存取引用,并且对元组进行索引操作的速度相对较快。

二:实际运用中的元组:

  1,元组的特殊语法---逗号和圆括号:如果圆括号里的单一对象是元组对象而不是一个简单的表达式,需要对Python 进行特别说明。如果确实想得到一个元组,只要在这一单个元素之后,关闭括号之前加一个逗号就可以了。

  2,转换、方法以及不可变性:对于以上的操作应用于元组时将会返回新的元组。并且元组不提供字符串、列表和字典中的方法。如果你想对元组进行排序,通常可以先将它转换为列表使其变为一个可变对象,然后对其用sort() 方法进行列表排序,最后用再转换为元组。还可以用新的 sorted() 内置方法,它接受任何序列对象。

>>> T = ('cc','bb','aa','dd')
>>> temp = list(T) #内置list() 方法将元组转换为列表
>>> temp
['cc', 'bb', 'aa', 'dd']
>>> temp.sort() #对列表进行排序
>>> temp
['aa', 'bb', 'cc', 'dd']
>>> T = tuple(temp) #内置tuple()方法将列表转换为元组
>>> T
('aa', 'bb', 'cc', 'dd')
>>> T
('aa', 'bb', 'cc', 'dd')
>>> sorted(T) #可用sorted() 函数直接对元组进行排序,返回列表
['aa', 'bb', 'cc', 'dd']

  3, 元组支持‘+’(合并)和 ‘*’ (重复)操作符,并且支持位置索引和分片。

>>>(1,2) * 4             #元组的重复操作符
(1,2,1,2,1,2,1,2)
>>>
>>>x = 40 #An integer!
>>>x
40
>>>y = (40,) #A tuple containing an integer
>>>y
(40,)

  作为特殊情况,在不会引起语法冲突的情况下,Python 允许忽略元组的圆括号。只需要由逗号隔开各项即可,在赋值语句中,即使没有圆括号,Python 也能够识别出这是一个元组。对于初学者,最好的建议是一直使用圆括号,这可以增加脚本的可读性,而且更加不容易出错。

  4,转换、方法以及不可变性:元组具有不可变性,所以对于以上的操作将会返回一个新的元组,并且元组不提供列表中的方法。如果你想对元组进行排序,通常可以先转换为列表 用list()函数,然后用sort()函数对该列表进行排序,然后再用内置函数tuple()转换为元组。实际上,这两个调用都会生成新的对象,但结果就像是转换。

  5,列表解析也可用用于将元组对象转换为列表:

>>> T = (1,2,3,4,5)
>>> L = [x +20 for x in T] #列表解析将元组转换为列表
>>> L
[21, 22, 23, 24, 25]

列表解析是名副其实的序列操作-----它们总会创建新的列表,也可以遍历任何序列对象。

  6,元组中的index() 方法和  count() 方法:

>>> T = (1,2,3,2,4,2)
>>> T.index(2) # Offset of first appearance of 2
1
>>> T.index(2,2) #Offset of appearance after offset 2(include 2)
3
>>> T.count(2)
3

  7,元组的不可变性只适用于元组本身顶层而并非其内容。例如,元组内部的列表是可以像往常那样修改的。

>>> T = (1,[2,3],4)
>>> T[1] = 'spam'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> T[1][0] = 'spam'
>>> T
(1, ['spam', 3], 4)

三:为什么有了列表还要元组

  元组的不可变性提供了某种完整性。这样可以确保元组在程序中不会被另一个引用修改,而列表就没有这样的保证了。元组也可以用在列表无法使用的地方。例如,作为词典键,一些内置操作可能也要求或暗示要使用元组而不是列表。

九:python 对象类型详解五:元组的更多相关文章

  1. 十:python 对象类型详解六:文件

    一:文件 1.简介:内置open 函数会创建一个python 文件对象,可以作为计算机上的一个文件链接.在调用open 之后,可以通过调用返回文件对象的方法来读写相关外部文件.文件对象只是常见文件处理 ...

  2. 四:python 对象类型详解一:数字(下)

    一:位操作 除了一般的数学运算,python也支持c语言中的大多数数学表达式.这包括那些把整数当作二进制位串对待的操作.例如,还可以实现位移及布尔操作: >>> x = 1 > ...

  3. 三:python 对象类型详解一:数字(上)

    一:python 的数字类型: a)整数和浮点数 b)复数 c)固定精度的十进制数 d)有理分数 e)集合 f)布尔类型 g)无穷的整数精度 h)各种数字内置函数和模块 二:各种数字类型的详解 1,数 ...

  4. 六:python 对象类型详解二:字符串(下)

    一:字符串方法: 方法就是与特定对象相关联在一起的函数.从技术的角度来讲,它们是附属于对象的属性,而这些属性不过是些可调用的函数罢了.Python 首先读取对象方法,然后调用它,传递参数.如果一个方法 ...

  5. 七:python 对象类型详解三:列表

    一:列表简介: 1,列表可以包含任何种类的对象:数字.字符串甚至集合对象类型.列表都是可变对象,它们都支持在原处修改的操作,可以通过指定的偏移量和分片.列表方法调用.删除语句等方法来实现.关键的作用有 ...

  6. 五:python 对象类型详解二:字符串(上)

    一:常量字符串 常量字符串用起来相对简单,也许最复杂的事情就是在代码中有如此多的方法来编写它们. eg:单引号:'spam"m'   , 双引号: “spa'm” , 三引号:‘’‘... ...

  7. 八:python 对象类型详解四:字典

    一:字典通识: 1,字典通过键而不是偏移量来读取: 2,字典是任意对象的无序集合: 3,字典可变长.异构.任意嵌套: 4,字典属于可变映射类型: 5,对象引用表(散列表): 二:实际应用中的字典: 1 ...

  8. JavaScript中的对象类型详解

    To be finished 摘要 1.什么是对象? 2.引用类型和原始类型 3.对象数据属性拥有的特性(Attributes) 4.如何创建对象 a.直接定义 var mango={color:&q ...

  9. ECMAScript---object对象类型详解

    普通对象:由大括号包裹起来的,由零到多个属性名和属性值(键值对)组成的 那什么是属性呢? 属性:描述当前对象特征的,属性名是当前具备这个特征,属性值是这个特征的描述(专业语法,属性名称为键[key], ...

随机推荐

  1. 类库、委托、is/as

    一.类库(Class Library) 定义:类库是一个综合性的面向对象的可重用类型集合,这些类型包括:接口.抽象类和具体类.(内容不可见) 类库建立:文件--新建--项目--类库--生成解决方案 类 ...

  2. 安装 docker管理 工具 页面 portainer

    sudo docker run -d -p 7998:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data ...

  3. 来分析一个UVC的摄像头的枚举信息

    使用到工具USBlyzer导出数据,但是会发现一些还有部分解析未完全.我们将借助UVCView.x86(https://files.cnblogs.com/files/libra13179/77772 ...

  4. 机器学习进阶-阈值与平滑-图像阈值 1. cv2.threshold(进行阈值计算) 2. 参数type cv2.THRESH_BINARY(表示进行二值化阈值计算)

    1. ret, dst = cv2.thresh(src, thresh, maxval, type) 参数说明, src表示输入的图片, thresh表示阈值, maxval表示最大值, type表 ...

  5. too many connections 解决方法

    最近写javaee项目的时候,mysql报了too many connections的错误,百度的内容有一些有问题,所以我重新写一下我的解决方法. mysql -u root -p 回车输入密码进入m ...

  6. svn从本地更新了资源库的资源后删除了某个文件夹无法恢复(已解决)

    事件描述: 删除了本地svn的某个文件夹中的某个文件后,想要恢复,但是无法恢复,解决方法如下 步骤: 1:在删除的文件夹下右键,选择TortoiseSVN——>Revert... 2:选择需要恢 ...

  7. NGUI 背景图自适应

    背景图UISprite组件调整如下: UIRoot设置: 不保持比例自适应: 保持宽与屏幕宽一致,高度随宽的缩放比例进行缩放:

  8. How to Pronounce the 50 States

    How to Pronounce the 50 States (1/4) Share Tweet Share Tagged With: Places The US state names can be ...

  9. mysql 授权命令

    MySQL 数据库赋予用户权限操作表   MySQL清空数据库的操作:truncate table tablename; MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库 ...

  10. 【379】pandas 说明

    参考:Part 1 参考:Part 2