七:python 对象类型详解五:元组

一:元组:

  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)

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

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

原文地址:https://www.cnblogs.com/zpcoding/p/8850212.html

时间: 2024-10-05 06:44:07

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

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

一:python 的数字类型: a)整数和浮点数 b)复数 c)固定精度的十进制数 d)有理分数 e)集合 f)布尔类型 g)无穷的整数精度 h)各种数字内置函数和模块 二:各种数字类型的详解 1,数字常量:python提供了:整数(正整数和负整数)和浮点数(带有小数部分的数字).python还允许我们使用十六进制,八进制和二进制常量来表示整数,并且允许整数具有无穷的精度. (¥)内置数学工具和扩展:python提供了一系列处理数字对象的工具: a)表达式操作符:+,-,*,/,>>(右移),

三:python 对象类型详解一:数字(下)

一:位操作 除了一般的数学运算,python也支持c语言中的大多数数学表达式.这包括那些把整数当作二进制位串对待的操作.例如,还可以实现位移及布尔操作: >>> x = 1 #0001 >>> x << 2 #shift left 2 bits:0100 4 >>> x | 2 #Bitwise OR:0011 3 >>> x & 1 #Bitwise AND:0001 1 这样的按位进行掩码的运算,使我们可以对一

JavaScript对象类型详解

JavaScript对象类型详解 JavaScrtip有六种数据类型,一种复杂的数据类型(引用类型),即Object对象类型,还有五种简单的数据类型(原始类型):Number.String.Boolean.Undefined和Null.其中,最核心的类型就是对象类型了.同时要注意,简单类型都是不可变的,而对象类型是可变的. 什么是对象 一个对象是一组简单数据类型(有时是引用数据类型)的无序列表,被存储为一系列的名-值对(name-value pairs).这个列表中的每一项被称为 属性(如果是函

Python基础知识详解 从入门到精通(七)类与对象

本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详解 从入门到精通(三)语法与函数Python基础知识详解 从入门到精通(四)列表.元组.字典.集合Python基础知识详解 从入门到精通(五)模块管理Python基础知识详解 从入门到精通(六)文件操作PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此

Python:file/file-like对象方法详解【单个文件读写】

IO中读写文件操作方法汇总!----The_Third_Wave的学习笔记! 本文由@The_Third_Wave(Blog地址:http://blog.csdn.net/zhanh1218)原创.不定期更新,有错误请指正. Sina微博关注:@The_Third_Wave 如果这篇博文对您有帮助,为了好的网络环境,不建议转载,建议收藏!如果您一定要转载,请带上后缀和本文地址. class file(object) |  file(name[, mode[, buffering]]) -> fi

网络互联技术(四)-LSA的第四和第五种类型详解

LSA的第四和第五种类型详解 一.External LSA:第五种LSA 我们前面已经详细介绍了前面三种LSA,今天就接着介绍第四种和第五种LSA.因为理解ASBR Summary LSA--第四种LSA需要涉及External LSA的一些知识,所以我们先介绍第五种LSA,然后再回过头来看第四种LSA. External LSA由ASBR(Autonomous System Border Router,自治系统边界路由器,我们前面说过了OSPF网络就是一个自治系统)产生.它是用来通告OSPF网

使用Python操作Redis详解

之前的五天,过了个愉快的周末,然后将公司AbaseDump的调度部分代码看懂并且在此之上完成了OnlyDump的功能代码,代码不可以公开,今天完工,明天测试,晚上来总结一下这几天学到的一点应用. 使用Python操作Redis详解 ------------------------------------------------------------------------------------------------- 一. 文档说明 本文档仅介绍Redis在Python中的使用,Redis

python之struct详解

python之struct详解 2018-05-23 18:20:29 醉小义 阅读数 20115更多 分类专栏: python 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_30638831/article/details/80421019 用处 按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时,不能传输int,此时先将int转化为字节流,然后再发送;

Python中dict详解

yangyzh Python中dict详解 python3.0以上,print函数应为print(),不存在dict.iteritems()这个函数. 在python中写中文注释会报错,这时只要在头部加上# coding=gbk即可 #字典的添加.删除.修改操作dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o&qu