[Python学习日记-16] 细讲数据类型——元组

[Python学习日记-16] 细讲数据类型——元组

简介

元组的创建和查看

元组的切片

元组的循环

元组的嵌套

简介

        有些时候我们的列表数据不想被人修改时怎么办?就可以用元组存放。元组(tuple)其实是列表的兄弟类型,他们非常的相似,但元组是不能修改的,这意味着不能向元组中添加、删除或修改元素,所以我们也把它称之为只读列表。

定义:与列表类似,只不过 [] 改成 ()

特性:

  1. 可存放多个值
  2. 不可变
  3. Python 中的元组是一种有序的,按照从左到右的顺序定义元组元素,下标从0开始顺序访问

元组的创建和查看

一、创建

name = (1,2,3,4)
name = ("str1","str2","str3","str4")
name = ("str1",2,3,"str4")
name = ("str1","str2",[1,2,3,4],"str3","str4")

 代码输出如下: 

 

二、查看 

1、索引查看

name = ("str1","str2","str3","str4")
name[0]
name[3]
name[-1]

 代码输出如下: 

 

2、使用列表的方法查询

name.index("str2")    # 返回从左开始匹配到的第一个 str2 的索引
name.count("str2")    # 返回元组中 str2 的个数

 代码输出如下: 

 

注意:index() 如果查找的元素不存在于元组当中,会报错说元组中不存在该元素;而 count() 没有找到将不会报错,而是显示0

3、获取元组的长度

print(len(name))

 代码输出如下: 

 

 4、直接查在不在元组

"str1" in name
"str5" in name
"str4" not in name

 代码输出如下: 

 

5、把元组全取出来

print(name[:])

 代码输出如下: 

 

元组的切片

        元组的切片和列表一样

name[start:end]

1、正着切

name = ("str1","str2","str3","str4","str5")
print(name[1:4])    # 不包含序号为4的元素
print(name[1:-2])
print(name[1:])    # 把最后的都取出来
print(name[:4])    # 左边不写代表从0开始

 代码输出如下: 

2、倒着切

name = ("str1","str2","str3","str4","str5")
print(name[-5:-1])

print(name[-5:])    # 与列表相同,只需要不输入结尾的序号就可以直接取出后5位了

 代码输出如下: 

3、步长 

        元组的步长与列表也是一样的,默认的步长是1,所以切片的时候是一个个切的,我们通过步长的设置可以实现两个两个切、三个三个切...这样跳着切

name[start:end:step]        # step 默认值是1

print(name[0:-1:1])    # 设置步长为1
print(name[0:-1:2])    # 设置步长为2,这样会跳一个打印一个
print(name[0:-1:3])    # 设置步长为3
print(name[::3])    # 整个列表加步长3
print(name[::-1])    # 元组都倒序
print(names[-1:-5:-1])    # 在倒序的基础上就可以从右往左切

 代码输出如下: 

 

元组的循环

for i in name:
    print(i)

 代码输出如下: 

 

元组的嵌套

         前面说到,元组本身是不能修改的,如果元组中包含其他可变的元素呢?例如列表之类的。这些可变元素是可以改变的

name = ("str1","str2",[1,2,3,4],"str3","str4","str5")
name[2][0] = 11
print(name)

 代码输出如下: 

        为什么元组内的列表是可变的呢?按照理解不应该都是不可变的吗?这是因为元组只是存每个元素的内存地址,上面 [11,2,3,4] 这个列表本身的内存地址存在元组里确实不可改变,但是整个列表包含的元素的内存地址是存在另外一块空间里的,而这个空间是一个列表是可变的。

         总的来说,元组本身不可修改,如果包含可修改的数据类型, 那被包含的数据类型可以修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JoveZou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值