python元组的详细介绍

描述

python元组

元组(英文名 tuple),和列表非常的相似,它也是由一系列元素按顺序进行排列而成的容器。

不同的是,元组是不可变的,而列表是可变的。

1. 创建元组

创建元组有三种方法

第一种方法:直接使用 圆括号 将所有的元素进行包围。这有别于创建列表时使用的是中括号:[]

>>> atuple = (1,2,3,4)
>>> atuple
(1, 2, 3, 4)

第二种方法:有时候,创建元组时,圆括号可有可无的。

>>> btuple = 1,2,3,4
>>> btuple
(1, 2, 3, 4)

第三种方法:使用元组推导式,由于元组是不可变的,所以生成一个生成器对象。这一种对于新手来说可能会比较难以理解,我会放在后面专门进行讲解,这里先作了解,新手可直接跳过。

>>> ctuple = (i for i in range(1,6))
>>> ctuple
 at 0x10a288f90>

上面三种方法介绍完毕~

你以为就这么简单?

当你在创建只有一个元素的元组时,你有可能会这样子创建

>>> ctuple = (1)
>>> type(ctuple)

>>> ctuple
1
>>>

却发现,创建出来的并不是 tuple,而是一个 int 对象。

此时千万要记住,当你创建只包含一个元素的元组时,要在第一个元素后面加一个逗号

>>> ctuple = (1,)
>>> type(ctuple)

>>> ctuple
(1,)
>>>
>>> dtuple = 1,
>>> type(dtuple)

>>> dtuple
(1,)

另外,创建空元组可以这样

>>> a = tuple()  # 第一种方法
>>> a
()
>>> type(a)

>>> b = ()  # 第二种方法
>>> b
()
>>> type(b)

2. 增删改查

最前面我们说过,元组是不可变的。因此,你想对元组进行修改的行为都是不被允许的。

呐,看一下示例,查看元素可以,但是修改元素和删除元素都报错了。

>>> atuple = (1,2,3,4)
>>> atuple[0]   # 查看元素
1
>>> atuple[0] = 0
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'tuple' object does not support item assignment
  >>>
  >>> del atuple[0]
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'tuple' object doesn't support item deletion

新增元素呢?当然同样也是不支持的,这里不再演示。

3. 元组与列表的转换

虽然元组可能看起来与列表很像,但它们通常是在不同的场景被使用,并且有着不同的用途。

元组是 immutable (不可变的),其序列通常包含不同种类的元素,并且通过解包或者索引来访问(如果是 namedtuples 的话甚至还可以通过属性访问)。

列表是 mutable (可变的),并且列表中的元素一般是同种类型的,并且通过迭代访问。

那有办法可以实现二者的转换吗?

当然有,而且非常简单。

将元组转成列表

>>> atuple = (1,2,3,4)
>>> type(atuple)

>>>
>>>
>>> list(atuple)
[1, 2, 3, 4]

将列表转成元组

>>> alist = [1,2,3,4]
>>> type(alist)

>>>
>>>
>>> tuple(alist)
(1, 2, 3, 4)

审核编辑:符乾江
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分