资讯专栏INFORMATION COLUMN

python-数据类型之元组

xiaowugui666 / 2460人阅读

摘要:元组是不可以改变的序列,如果元组的元素包含列表字典是支持修改操作的。这就意味着它们通过算法得到的值总是一个值。这是作为字典键值的一个必备条件。

元组是不可以改变的序列,如果元组的元素包含列表、字典是支持修改操作的。
因为不可变所以元素的修改会报错:

>>> tt=(3,4,5)
>>> type(tt)

>>> tt[2]=4

Traceback (most recent call last):
File "", line 1, in
TypeError: "tuple" object does not support item assignment(#元素修改报错)

(一)元组
(1)定义元组: 创建一个元组并给他赋值实际上跟创建一个列表并给它赋值完全一样,除了一点,只有一个元素的元组需要在元组分割符里面加一个逗号(,)用以防止跟普通的分组操作符混淆.不要忘了它是一个工厂方法

>>> a=()
>>> a=(1,)                 #如果不加,就表示a=(1)等价于1
>>> a     
(1,)
>>> a=2,3
>>> type(a)

>>> a
(2, 3)
>>> tuple("bar")        #工厂方法定义无组
("b", "a", "r")
>>> def f():           #函数的返回值是一个元组
>>>     return 2,3
>>> f()
(2, 3)

元组的成员:包括字典、列表、数字、字符:

>>> tuple22=(None,5,6,6,"ab",[1,2,3])
>>> a=(1,2,"a",["b",3],{1:2})
>>> type(a)

>>> for i in a:
...     print i
...
1
2
a
["b", 3]
{1: 2}
>>> a[3][0]="x"
>>> print a
(1, 2, "a", ["x", 3], {1: 2})
>>> a[4][1]="x"
>>> print a
(1, 2, "a", ["x", 3], {1: "x"})

(2)访问元组:元组的切片操作跟列表一样,用方括号作为切片操符([]),里面写上索引值或者索引范围.

>>> aTuple = (123, "abc", 4.56, ["inner", "tuple"], 7-9j)
>>> aTuple[1:4]
("abc", 4.56, ["inner", "tuple"])
>>> aTuple[:3]
(123, "abc", 4.56)
>>> aTuple[3][1]
"tuple"

(3)更新元组:
跟数字和字符串一样,元组也是不可变类型,就是说你不能更新或者改变元组的元素,我们是通过现有字符串的片段再构造一个新字符串的方式解决的,对元组同样需要这样.

>>> aTuple = aTuple[0], aTuple[1], aTuple[-1]
>>> aTuple
(123, "abc", (7-9j))
>>> tup1=(12,34.56)
>>> tup2=("abc","xyz")
>>> tup3=tup1+tup2
>>> tup3
(12, 34.56, "abc", "xyz")

(4)元组的删除:删除一个多带带的元组元素是不可能的,删除一整个元组是可以的。

>>> a=(1,[2,3],{4:5,5:6})
>>> del a[0]
Traceback (most recent call last):
File "", line 1, in 
TypeError: "tuple" object doesn"t support item deletion
>>> del a[1][1]
>>> print a
(1, [2], {4: 5, 5: 6})
>>> del a[2][4]
>>> print a
(1, [2], {5: 6})

(二)元组:标准类型操作符,序列类型操作符和内建函数
(1)创建,重复,连接操作

>>> t = (["xyz", 123], 23, -103.4)
>>> t
(["xyz", 123], 23, -103.4)
>>> t*2
(["xyz", 123], 23, -103.4, ["xyz", 123], 23, -103.4)
>>> t=t+("free","easy")
>>> t
(["xyz", 123], 23, -103.4, "free", "easy")

(2)成员关系操作,切片操作

>>> 23 in t
True
>>> 123 in t
False
>>> t[0][1]
123
>>> t[1:]
(23, -103.4, "free", "easy")

(3)内建函数

>>> str(t)
"(["xyz", 123], 23, -103.4, "free", "easy")"
>>> len(t)
5
>>> max(t)
"free"
>>> min(t)
-103.4
>>> cmp(t,(["xyz", 123], 23, -103.4, "free", "easy"))
0
>>> list(t)
[["xyz", 123], 23, -103.4, "free", "easy"]

(4)操作符

>>> (4,2)<(3,5)
False
>>> (2,4)<(3,-1)
True
>>> (2,4)==(3,-1)
False
>>> (2,4)==(2,4)
True

(三)元组类型操作符和内建函数,内建方法:元组的特殊性
(1)所有的多对象的,逗号分隔的,没有明确用符号定义的,比如说像用方括号表示列表和用圆括号表示元组一样,等等这些集合默认的类型都是元组:

>>> "abc", -4.24e93, 18+6.6j, "xyz"
("abc", -4.24e+93, (18+6.6j), "xyz")
>>> x,y=1,2
>>> x,y
(1, 2)

所有函数返回的多对象(不包括有符号封装的)都是元组类型。注意,有符号封装的多对象集合其实是返回的一个单一的容器对象:

>>> def foo(x,y):
...     return x,y
>>> foo(4,5)
(4, 5)

>>> def foo1(x,y):
...     return (x,y)
>>> foo1(5,6)
(5, 6)

(2)作为字典的关键字
不可变对象的值是不可改变的。这就意味着它们通过 hash 算法得到的值总是一个值。这是作为字典键值的一个必备条件。

>>> dic={(3,4):"welcome","a":333}
>>> dic
{"a": 333, (3, 4): "welcome"}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40899.html

相关文章

  • Python全栈之路系列元组数据类型

    摘要:元组和列表的为唯一区别就是列表可以更改,元组不可以更改,其他功能与列表一样创建元组的两种方法第一种第二种如果元祖内只有一个元素,那么需要加上一个逗号,否则就变成字符串了。 元组(tuple)和列表的为唯一区别就是列表可以更改,元组不可以更改,其他功能与列表一样 创建元组的两种方法 第一种 ages = (11, 22, 33, 44, 55) 第二种 ages = tuple((11,...

    李涛 评论0 收藏0
  • python基础知识元组

    摘要:元组运算符可与使用加号来连接两个元组输出为也可以使用乘号输出为当然也可以用成员运算符通用地可以使用删除元组元组相关内置函数计算元组元素个数。返回元组中元素最大值返回元组中元素最小值。可迭代对象将可迭代对象转换为元组。 元组是什么? 你可以把它看作是只读的列表,因为元组不可改变,但是要注意,如果元组中含有列表元素,则该列表元素是可变的,通俗地讲就是儿子不可变,但是孙子可变 由于元组不可...

    ACb0y 评论0 收藏0
  • Python特性元组

    摘要:通过字段名或者位置来获取一个字段的信息属性是一个包含这个类所有字段名称的元组用通过接受一个可迭代对象来生成这个类的一个实例作用跟一样把具名元组以形式返回 元组不仅仅是不可变列表 元组其实是对数据的记录:元组中的每个元素都存放了记录中一个字段的数据,外加这个字段的位置。 正是这个位置信息给数据赋予了意义 lax_coordinates = (33.9425, -118.408056)...

    CoderBear 评论0 收藏0
  • 7、TypeScript 元组 - Tuple

    摘要:与声明数组类型类似只不过在数组基础上更加细分化每个元素示例顺序不可以颠倒长度不可以违规是固定的如果你的数组没有满足元组要求报错意思就是你的属性个在类型中缺失,但在元组中设定是必须的如果你的元素没有满足数组的长度会怎么样呢报错意思是你的数组不 与 声明数组类型 类似 只不过在 数组 基础上更加细分化每个元素 示例: let myTuple: [number, string, boo...

    rickchen 评论0 收藏0
  • Python中的类元编程

    摘要:类元编程是指在运行时创建或定制类的技艺。注意在中做元编程时最好不要用和函数。三元类基础知识元类是类元编程最高级的工具使用元类可以创建具有某种特质的全新变种,例如抽象基类。建议除非开发框架,否则不要在生产代码中定义元类或抽象基类。 导语:本文章记录了本人在学习Python基础之元编程篇的重点知识及个人心得,打算入门Python的朋友们可以来一起学习并交流。 本文重点: 1、了解运行时创建...

    alexnevsky 评论0 收藏0

发表评论

0条评论

阅读需要支付1元查看
<