元组!在Python中元组是属于列表的一种延伸,也是一种有序集合,成为一种只读列表,即数据可以被查找,不能被修改,列表的切片操作同样适用于元组。

  特点:1. 与列表非常相似。

     2. 一旦初始化就不能修改(这句话的意思是:元素不可变,但是元素中的值可以改)。

            3. 使用小括号。

       4. 如果元素当中只有一个元素(12, ),书写习惯上也应该加上一个逗号。原因和列表这个地方的原因是一样的。

1.   元组的简单应用

1.1   创建元组

  格式:元组名 = (元组选项1,元组选项2,元组选项n)

  创建一个空元组和带有元素的元组。

 # 创建空的元组
tuple1 = ()
print(tuple1)
# 输出结果:() # 创建带有元素的元组
# 元组中的元素的类型可以不同
tuple2 = (1, 2, 3, "good", True)
print(tuple2)
# 输出结果:(1, 2, 3, 'good', True) # 定义只有一个元素的元祖
tuple3 = (1, )
print(tuple3)
print(type(tuple3))
# 输出结果:
# (1,)
# <class 'tuple'>

1.2   元组的常规操作

1.2.1   元素元素的访问

 # 元组元素的访问
# 格式:元组名[下标]
tuple4 = (1, 2, 3, 4, 5)
print(tuple4[0])
# print(tuple4[5]) # 下标越界报错
print(tuple4[-1]) # 获取最后一个元素
# 输出结果:
#
#

1.2.2   元组元素的修改

  元组不允许修改元素,但是元组当中元素的值(二级目录一下的值可以修改)

 # 修改元组
tuple5 = (1, 2, 3, 4, [5, 6, 7])
tuple5[-1][0] = 500 # 改变里面的list可以变
print(tuple5)
# 输出结果:(1, 2, 3, 4, [500, 6, 7]) # 元组的元素不能修改
tuple6 = (1, 2, 3, "good", True)
tuple6[3] = "bad" # 改变里面的list可以变
print(tuple6)
# 输出结果:
# Traceback (most recent call last):
# File "C:/Users/Administrator/Desktop/Python-1704/day04/tuple(元组).py", line 51, in <module>
# tuple6[3] = "bad" # 改变里面的list可以变
# TypeError: 'tuple' object does not support item assignment

1.2.3   元组元素的删除

 # 删除元组
tuple6 = (1, 2, 3)
del tuple6[0]
del tuple6
print(tuple6)
# 输出结果:
# 不允许删除元组的元素
# Traceback (most recent call last):
# File "C:/Users/Administrator/Desktop/Python-1704/day04/tuple(元组).py", line 67, in <module>
# del tuple6[0]
# TypeError: 'tuple' object doesn't support item deletion
# 删除整个元组
# Traceback (most recent call last):
# File "C:/Users/Administrator/Desktop/Python-1704/day04/tuple(元组).py", line 69, in <module>
# print(tuple6)
# NameError: name 'tuple6' is not defined

1.2.4   元组的组合

 # 元组的组合
t7 = (1, 2, 3)
t8 = (4, 5, 6)
t9 = t7 + t8
print(t7 + t8)
print(t7, t8)
print(t9)
# 输出结果:
# (1, 2, 3, 4, 5, 6)
# (1, 2, 3) (4, 5, 6)
# (1, 2, 3, 4, 5, 6)

1.2.5   元组的重复

 # 元组重复
t10 = (1, 2, 3)
print(t10 * 3)
# 输出结果:(1, 2, 3, 1, 2, 3, 1, 2, 3)

1.2.6   判断元素是否在元组中,返回值为False 或 True,成员运算符(in,not in);身份运算符同理不再举例。

 # 判断元素是否在元组中
t11 = (1, 2, 3)
print(1 in t11)
# 输出结果:True

1.2.7   元组的截取(切片)

  格式:[[start] [,end] [,step]],开始位置,结束位置,步长

  注意:几到几的指针是放到元素的前面。

 # 元组的截取
# 格式:元组名[开始下标,结束下标]
# 从开始下标开始截取,截取到结束下标之前
t12 = (1, 2, 3, 4, 5, 6, 7, 8, 9)
print(t12[3:7])
print(t12[3:])
print(t12[:7])
# 输出结果:
# (4, 5, 6, 7)
# (4, 5, 6, 7, 8, 9)
# (1, 2, 3, 4, 5, 6, 7)

1.2.8   二维元组和三维元组

  二维元组和三维元组,以及其他高维元组的逻辑是在元组内在表示一组元组元素。访问也是通过双下标、三下标或高下标的方式访问,操作高维元组和操作一维元组的逻辑是一样的。

 # 二位元组,及其以上元组,元素为一维元组的元组
t13 = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
print(t13[1][1])
# 输出结果:访问第二个元组中的第二个元素
#

2.   元组的常见内建函数的应用

  函:len  

    语:len(tuple)

      用:返回元组中元素的个数

 # 元组的方法
# len 返回元组中元素的个数
t14 = (1, 2, 3, 4, 5)
print(len(t14))
# 输出结果:
#

  函:max()、min()

    语:max(tuple)、min(tuple)

      用:返回元组中的最大值、返回元组中的最小值

 # max()返回元组中的最大值
# min()返回元组中的最小值
print(max((5, 6, 7, 8, 9)))
print(min((5, 6, 7, 8, 9)))
# 输出结果:9 5

3.   元组常用技巧

3.1   将列表转换为元组

 # 将列表转为元组
list = [1, 2, 3]
t15 = tuple(list)
print(t15)
print(type(t15))
# 输出结果:
# (1, 2, 3)
# <class 'tuple'>

3.2   元组的遍历

  函:enumerate

    语:enumerate(e, start = )

      用:枚举函数,start= 表示从数字几开始记录枚举的起始,如果是0,就为0,1,2,3,4......为序号开始标记;如果为1,就为1,2,3,4,5,为序号开始标记;默认为从0开始。

 # 元组的历编
for i in (1, 2, 3, 4, 5):
print(i, end="")
print("\n")
# 输出结果:12345 # 通过枚举的方式遍历元组元素
for i, v in enumerate((1, 2, 3, 4, 5), 1):
print(i, v)
# 输出结果:
# 1 1
# 2 2
# 3 3
# 4 4
# 5 5

Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之元组类型(tuple)的更多相关文章

  1. Python笔记_第一篇_面向过程_第一部分_2.内存详解

    Python的很多教材中并没有讲内存方面的知识,但是内存的知识非常重要,对于计算机工作原理和方便理解编程语言是非常重要的,尤其是小白,因此需要把这一方面加上,能够更加深入的理解编程语言.这里引用了C语 ...

  2. Python笔记_第一篇_面向过程_第一部分_1.Python环境的设置(含虚拟机)

    *Python环境的设置 Python的环境设置也就是所需工作平台的软件搭建.常用的搭建平台IOS系统+Linux系统和Windows+Linux系统的搭建.这里主要说明的是Windows+Linux ...

  3. Python笔记_第一篇_面向过程_第一部分_6.条件控制语句(if)

    Python正如其他语言一样存在两种常用的逻辑判断体(也叫结构化程序设计).所谓逻辑判断体是通过你想要完成的编程思路,通过在逻辑判断体中的相互判断和作用得到你想要的结果.逻辑判断体也叫控制语句,Pyt ...

  4. Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改

    这一部分分三个主题进行讲解,主要为后面的模块.包.第三方库的概念补充一些相关的内容. 1. 路径(Path): 相对路径和绝对路径. 举例1:我们先导入一个os库(模块)来观察一下路径 import ...

  5. 四、java基础-面向过程_对象_类中可出现的因素

    1.面向过程和面向对象区别: 1)面向过程:开发一个应用程序.一个项目,必须先了解整个过程,了解各个步骤.模块间的因果关系,使的面向过程方式去开发程序时,代码和代码之间的关联程度是非常强.所以其中任何 ...

  6. python自动化开发-[第五天]-面向过程、模块、包

    今日概要: 1.内置模块 2.协程函数 3.递归 4.面向过程编程与函数编程 5.模块 6.包 7.re正则 一.内置模块 1.匿名函数lambda 定义:匿名函数通常是创建了可以被调用的函数,它返回 ...

  7. python第四周迭代器生成器序列化面向过程递归

      第一节装饰器复习和知识储备------------ 第一节装饰器复习和知识储备------------ def wrapper(*args,**kwargs): index(*args,**kwa ...

  8. [Python笔记]第八篇:模块

    本篇主要内容:python常用模块用法介绍 什么是模块 模块,用一大段代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性 ...

  9. [Python笔记]第三篇:深浅拷贝、函数

    本篇主要内容:深浅拷贝,自定义函数,三目运算,lambda表达式, 深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import ...

随机推荐

  1. intellij idea 怎么全局搜索

    1.Ctrl+N按名字搜索类 相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件,就像idea在其它的搜索部分的表现一样,搜索类名也能对你所要搜索的内容多个部分进行匹配,而且 ...

  2. ls 查看文件

    1.按文件大小查看文件 a.降序:ls -lsh moudaen@morton:~$ ls -lshtotal 20M 20M -rw-r--r-- 1 moudaen 65536  20M Nov ...

  3. pytorch文档学习笔记(2)

    三.CUDA semantics 二.Broadcasting semantics  广播机制 广播机制要第一项对齐,第一项对齐后(相等)才能广播,或者某个第一项为1. 但如果两个size个数相等,则 ...

  4. .NET CORE部署各种问题

    1.安装运行时以后,执行dotnet --version查看版本提示  丢失api-ms-win-crt-runtime-l1-1-0.dll, 当本地api-ms-win-crt-runtime-l ...

  5. java web实现在线编辑word,并将word导出(二)

    前一篇文章介绍了后台将前台html转为word文档的一种方式,但却有一个问题是没法讲图片放置在生成的word报告中.我在网上找了很多方法,甚至将图片转换成base64编码的方式也不成功.效果如下: 由 ...

  6. 详解contextConfigLocation|Spring启动过程详解(转)

    原文链接:https://blog.csdn.net/qw222pzx/article/details/78191670 spring的应用初始化流程一直没有搞明白,刚刚又碰到了相关的问题.决定得好好 ...

  7. Maven - web 实例

    版权所有,未经授权,禁止转载 章节 Maven – 简介 Maven – 工作原理 Maven – Repository(存储库) Maven – pom.xml 文件 Maven – 依赖管理 Ma ...

  8. 2020/2/5 php编程学习

    一事无成的上午..就安了框架解决了一些报错信息 下面简单了解一下 安装一下框架: 什么是路由: 系统从URI(唯一资源定位器)参数中分析出当前请求的分组(平台),控制器和操作方法的过程就是路由. UR ...

  9. M内核迎来大BOSS,ARM发布Cortex-M55配NPU Ethos-U55 ,带来无与伦比的性能提升

    说明: 全球顶级嵌入式会展Embedded Word2020这个月底就开了,各路厂家都将拿出看家本领. 先回顾下去年的消息: 1.去年年初的时候ARM发布Armv8.1-M架构,增加了Arm Heli ...

  10. mysql float 这个大坑

    以后高精度的数据不要用这个字段  今天同事反应 应该是17390.7的数据 结果展示17390.6992  找了半天问题在哪 后来决定先不管  手动现在数据库改数据 结果手动改也改不过来  于是能确定 ...