当前位置: 首页 > news >正文

[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] 这个列表本身的内存地址存在元组里确实不可改变,但是整个列表包含的元素的内存地址是存在另外一块空间里的,而这个空间是一个列表是可变的。

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


http://www.mrgr.cn/news/24950.html

相关文章:

  • MongoDB 原子操作
  • [Python学习日记-12] Python中的流程控制(for)
  • 查询国内版Office 365邮件数量的详细指南
  • 详细分析Uniapp中的轮播图基本知识(附Demo)
  • Linux read命令详解使用
  • SOMEIP_ETS_104: SD_ClientServiceGetLastValueOfEventUDPMulticast
  • 2024年9月9日--9月15日(freex源码抄写+ue5肉鸽视频一节调节)
  • JVM锁的优化与逃逸分析
  • Java爬虫 爬取某招聘网站招聘信息
  • 【3.5 python中的numpy实现3层的神经网络】
  • C++中的for-each循环
  • C++力扣简单算法题整理-2(字符串、数组)
  • 一天认识一个硬件之主板
  • 资源监视器
  • 计算机毕业设计2025题目出炉,如何选择和流程分析看这一篇就够了
  • mysql 学习笔记三
  • MAC 地址简化概念(有线 MAC 地址、无线 MAC 地址、MAC 地址的随机化)
  • 04 Room
  • 软件测试中的黑盒测试方法,包括其定义、目的及主要步骤。
  • 优化你的MySQL查询:12个必备的SQL书写习惯!