首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python(五)元组(tuple

定义

元组是存在于小括号"()"种,由逗号“,”分隔的内置数据类型,属性与列表类似,区别是元组一旦初始化,便不能修改。

下面从定义的内容中详细解读下元组这个类型:

创建元组

既然要研究元组,必然要先创建元组,只需要在括号中添加元素,用逗号隔开

以下列出四个定义,然后打印出对应的数据类型

tup= ("acmula","xiaoC",1,2,3)

tup1= ()

tup2= (1)

tup3= (1,)

print(type(tup))

print(type(tup1))

print(type(tup2))

print(type(tup3))

首先,是一个有内容的元组、是一个空元组。

然后厉害了,和有什么区别?只是多了一个逗号么?

看下运行结果先:

看出来区别了吧,是一个元组,而居然是一个int类型!对,因为1 是一个int,如果是"a",就是str、如果是{"aaa":"aaa"},那它就是个dict ······

敲黑板!~如果需要定义的元组里,只有一个元素,需要在元素后边加上一个",",否则这个括号"()",会被先当做运算符

其实,创建元组,也可以不加括号,直接写成也是可以的,但是个人不推荐,毕竟自己看着都觉得乱

访问元组

OK,上边说了,元组是有序的,那么既然有序,就能按照有序数据类型玩儿

索引

tup= (1,2,3,"a","b","c")

print(len(tup))

print(tup[])

print(tup[5])

print(tup[-1])

上边定义了一个元组,看了一下长度,打印了第一个和最后一个元素,运行结果:

6

1

c

c

这跟其他的有序数据类型用法一样,不多说了

切片

tup= (1,2,3,"a","b","c")

print(len(tup))

print(tup[2::2])

print(tup[:-1])

print(tup[1:5:2])

这一段进行了切片操作,从第三个元素开始,隔一个取一个元素;取除最后一个元素外的所有元素;在第二个到第五个元素中,隔一个取一个元素。与其他有序数据类型用法一样

6

(3, 'b')

(1, 2, 3, 'a', 'b')

(2, 'a')

遍历元组中的元素

tup= (1,2,3,"a","b","c")

foriintup:

print(i)

这个也已经很熟悉了,直接上结果:

1

2

3

a

b

c

修改元组

曲线救国修改元组

"元组本身不可变,存在于元组里面的值不允许修改"哦,好,那他喵的怎么修改元组呢?

先尝试一下之前的修改元素的方式:

好,可以放弃这种方式了,直接提示不支持,还怎么玩儿呢

现在展示一种曲线救国的办法,虽然麻烦了一点,但好在能实现目的

tup= (1,2,3,"a","b","c")

print(id(tup))

tup= ("123123", )+tup[1:]

print(id(tup))

print(tup)

先看下运行结果:

1520973895720

1520991085000

('123123', 2, 3, 'a', 'b', 'c')

看到新的元组,说明现在已经是想要的样子,但是这真的是修改了之前的元组么?上边把两次的id打印出来了,可以看出来,使用的内存地址已经不是同一个,所以这其实是一个新的元组了

一个伪修改的栗子

然后来看一种其他的修改:

tup= (1,2,3,"a","b",[1,2,3])

print(id(tup))

tup[-1][1] =5

print(id(tup))

print(tup)

直接看结果:

2124537518120

2124537518120

(1, 2, 3, 'a', 'b', [1, 5, 3])

好么,还说不能改,这不是上边的都变成了么?

其实并不是这样的,上边的这个变化虽然是在元组中,但实际上改的已经不是元组这一维度的东西,而是元组内的列表的元素,所以两次打印的id是相同的,元组并没有发生变化。

就是说,元组内的可变元素的值可以修改,元组内的元素(包括可变元素)本身,是不能变的

删除元组

元组中的元素是不可变的自然也是不能删除的,但元组本身是能删除的,只需要它就好了

tup= (1,2,3,"a","b",[1,2,3])

deltup

print(tup)

运行结果如下:

Traceback (most recent call last):

File "D:/code/pycode/pytest/demo.py", line 5, in

print(tup)

NameError: name 'tup' is not defined

直接删除元组后,打印它,以为不存在了,所以报未定义错误

删除元组操作没什么可说的,记下就好了

其他

长度、求最大、求最小,看着眼熟吧,跟list的一样,不重复了,想看详细的欢迎翻阅之前的列表文章

列表转换为元组函数

list= [1,2,3,"a","b",[1,2,3]]

print(type(list))

tup=tuple(list)

print(tup)

print(type(tup))

这个也很简单,直接把列表转换为元组,运行结果:

(1, 2, 3, 'a', 'b', [1, 2, 3])

判断元素是否在元组内

tup= (2,3,"a","b",[1,2,3])

print("a"intup)

print(1intup)

print(8intup)

这里需要注意一下,判断元素是不是在元组内,也是仅判断元组的元素一个维度,不会对下一个维度进行判断,所以是在元组中的列表元素中,但不存在于元组的元素中。

所以运行结果:

True

False

False

end

欢迎关注公众号

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190219G0P4IA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券