Python3 元组

前言

本文主要介绍Python中的元组(tuple),主要内容包括 元组简介、元组特性、元组的基本操作。

文章目录

  • 前言
  • 一、元组简介
  • 二、元组特性
    • 1、不可变性
    • 2、有序性
    • 3、异构性
    • 4、可以嵌套使用
    • 5、元组类型比列表类型更加节省内存空间
  • 三、元组的基本操作
    • 1、创建
    • 2、索引
    • 3、切片
    • 4、查询
    • 5、统计
    • 6、拼接
    • 7、修改

一、元组简介

元组是一系列不可变的Python对象,一种序列。元组的定义语法为:(元素1, 元素2, …, 元素n),如:

my_tuple = (1, 2, 3)
print(type(my_tuple))

输出结果:

<class 'tuple'>

二、元组特性

1、不可变性

元组的元素不可修改,一旦创建之后就不能再改变,如:

my_tuple = (1, 2, 3)
my_tuple[1]=5print(type(my_tuple))

输出结果:

TypeError: 'tuple' object does not support item assignment  #TypeError: 'tuple'对象不支持项赋值

2、有序性

元组是有序的,每个元素都有固定的位置。可以通过索引来访问元素,也可以使用切片来获取元素的子集,如:

my_tuple = (1, 2, 3)
print(my_tuple[2])
print(my_tuple[:2])

输出结果:

3
(1, 2)

3、异构性

元组可以包含不同类型的元素,比如整数、浮点数、字符串等,如:

my_tuple = (1, 1.20, "hello",[3,4])
print(my_tuple)

输出结果:

(1, 1.2, 'hello', [3, 4])

4、可以嵌套使用

元组中的元素可以是其他元组,这样就可以形成嵌套的元组结构,如:

my_tuple = (1, 2,3 ,(4,5,6))
print(type (my_tuple[3]))

输出结果:

<class 'tuple'>

5、元组类型比列表类型更加节省内存空间

两者的内存占用情况相比较而言,元组占用的内存空间更小,如:

#引入sys 文件,我们要用到sys中的getsizeof()来获取对象占用内存的大小
import sysmy_tuple = (1, 2, 3, 4, 5)
my_list = [1, 2, 3, 4, 5]
print("元组内存占用: ",sys.getsizeof(my_tuple))
print("列表内存占用: ",sys.getsizeof(my_list))

输出结果:

元组内存占用:   80
列表内存占用:   104

三、元组的基本操作

元组的基本操作有创建、索引、切片、查询、统计、拼接等。

1、创建

创建一个元组可以使用小括号,多个元素之间用逗号 , 分隔,如:

my_tuple1 = ()my_tuple2 = (1,)  #这里的,号不能省略,否则my_tuple2会被定义成int类型
my_tuple3 = ('apple', 'banana', 'cherry')print(type (my_tuple1))
print(type (my_tuple2))
print(type (my_tuple3))

输出结果:

<class 'tuple'>
<class 'tuple'>
<class 'tuple'>

2、索引

索引的操作就是根据位置获取数组中的单个值,如:

my_tuple = (1, 2, 3)
print(my_tuple[1])
print(my_tuple[2])

输出结果:

2
3

3、切片

切片就是从元组中取多个元素的操作。下面我们看几个例子:

my_tuple = ('a', 'b', 'c', 'd', 'e', 'f', 'g')
print(my_tuple[1:3])
print(my_tuple[-3:-1])
print(my_tuple[:3])
print(my_tuple[:])
print(my_tuple[2::])
print(my_tuple[::2])print(type(my_tuple[::2]))

输出结果:

('b', 'c')
('e', 'f')
('a', 'b', 'c')
('a', 'b', 'c', 'd', 'e', 'f', 'g')
('c', 'd', 'e', 'f', 'g')
('a', 'c', 'e', 'g')
<class 'tuple'>

可以从例子看出来切片的几种写法和功能:
1.my_tuple[a:b]:取元组中下标为 a ~ b -1 的元素,可以用区间表示为 [a, b)
2.my_tuple[a:]:取元组中下标为 a ~ 列表最后的元素
3.my_tuple[:b]:取元组中下标为 b - 1 及其之前的元素
4.my_tuple[:]:取元组中的所有元素
5.my_tuple[a🅱️c]:在元组下标为 a ~ b -1 的元素中,每间隔c取一个元素

4、查询

可以使用 in 或 not in 运算符来判断元素是否存在于元组中,如:

my_tuple= (1, 2, 3)
print(2 in my_tuple)
print(4 not inmy_tuple)

输出结果:

True
True

5、统计

可以使用count()来统计列表内相同元素的个数的,如:

my_tuple = (1, 2, 3, 2, 4, 2)
print(my_tuple.count(2))

输出结果:

3

6、拼接

使用 + 运算符可以将两个元组合并成一个新的元组,如:

tup1 = (1, 2, 3)
tup2 = (4, 5, 6)
my_tuple = tup1 + tup2
print(my_tuple)

输出结果:

(1, 2, 3, 4, 5, 6)

7、修改

元组是不可变的,因此不能通过赋值语句来修改元素的值。不过,可以创建一个新的元组来替代原来的元组,从而间接地“修改”元组,如:

my_tuple = (1, 2, 3)
my_tuple = (4, 5, 6)
print(my_tuple)

输出结果:

(4, 5, 6)

还有一种特殊情况,当元素是可变对象时,对象内部属性是可以修改的!如:

my_tuple = ('a', 'b', ['A', 'B'])
my_tuple[2][0] = 'X'
my_tuple[2][1] = 'Y'
print(my_tuple)print(type(my_tuple[2]))

输出结果:

('a', 'b', ['X', 'Y'])
<class 'list'>

这里是因为第三个元素是list类型,而list本身就是可以被修改的。而元组中指向的第三个元素始终没有,它还是指向最初那个列表,变的是列表里面的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/20724.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用WMI横向移动

一. WMI介绍和使用 1. WMI介绍 WMI是Windows在Powershell还未发布前&#xff0c;微软用来管理Windows系统的重要数据库工具&#xff0c;WMI本身的组织架构是一个数据库架构&#xff0c;WMI 服务使用 DCOM或 WinRM 协议, 在使用 wmiexec 进行横向移动时&#xff0c;windows 操…

Go_unsafe包

是什么&#xff1f;为什么&#xff1f; 如何利用unsafe包修改私有成员&#xff1f; 结构体会被分配到一块连续的内存&#xff0c;结构体的地址也代表第一个成员的地址。 如何利用unsafe包获取slice和map的长度&#xff1f; // 利用unsafe包修改私有成员 type S struct {name …

vue中使用svg图像

一 、svg图像是什么 SVG&#xff08;可缩放矢量图形&#xff09;是一种图像格式&#xff0c;它以XML文档的形式存在&#xff0c;用以描述图像中的形状、线条、文本和颜色等元素。由于其基于矢量的特性&#xff0c;SVG图像在放大或改变尺寸时能够保持图形质量不受影响。这种格式…

Java 异步编编程——Java内置线程池(Executor 线程池)

文章目录 知道线程池是什么以及解决什么问题Java 内置线程池Java 内置线程池设计结构及执行机制ThreadPoolExecutor 中的概念生命周期核心参数阻塞队列4 种任务拒绝策略 线程池使用场景 知道线程池是什么以及解决什么问题 线程池&#xff08;Thread Pool&#xff09;是一种基于…

Linux性能优化-网络篇-DNS问题排查

文章目录 前言一、nslookupnslookup 使用交互模式非交互模式 二、dig命令解析域名解析IP指定DNS服务器dig 的trace功能 前言 DNS(Domain Name System) , 域名系统&#xff0c;主要提供域名和IP之间映射关系的查询服务。 本节内容我们带大家了解下如何分析和排查DNS问题。 本次…

如何进行数据库分库分表

当数据库的数据量增长到一定程度&#xff0c;单一数据库或表可能会遇到性能瓶颈&#xff0c;此时分库分表是一种常见的解决方案。以下是如何进行数据库分库分表的详细步骤和考虑因素&#xff0c;结合了参考文章中的相关信息&#xff1a; 一、分库分表概述 分库分表是为了解决…

devicemotion 或者 deviceorientation在window.addEventListener 事件中不生效,没有输出内容

问题&#xff1a;devicemotion 或者 deviceorientation 在window.addEventListener 事件中不生效&#xff0c;没有输出内容 原因&#xff1a; 1、必须在Https协议下才可使用 2、必须用户手动点击click事件中调用 &#xff0c;进行权限申请 源码&#xff1a; <!DOCTYPE h…

JVM 虚拟机

JVM 是 Java Virtual Machine 的简称&#xff0c;意为 Java 虚拟机&#xff0c;虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。 常见的虚拟机有&#xff1a;JVM、VMwave、Virtual Box等。JVM 是一台被定制过的现实当中不存在的计算…

行政工作如何提高效率?桌面备忘录便签软件哪个好

在行政管理工作中&#xff0c;效率的提高无疑是每个行政人员都追求的目标。而随着科技的发展&#xff0c;各种便捷的工具也应运而生&#xff0c;其中桌面备忘录便签软件便是其中的佼佼者。那么&#xff0c;这类软件又如何帮助我们提高工作效率呢&#xff1f; 首先&#xff0c;…

C语言| 求1到100之间所有奇数的和偶数之和

思路&#xff1a; 1 用到for循环功能&#xff1b; 2 定义两个循环变量i j , 奇数 i 1每次加2&#xff0c;偶数 j 0 每次加2 3 求和放在for 循环中间&#xff0c;每遍历一次就相加。 /* 求1到100之间所有奇数的和 求1到100之间所有偶数之和 */ #include <stdio.h> …

Vue前端中从后端获取图片验证码

前端发送请求 <template><el-form :model"user" :rules"rules" ref"userForm" class"login" label-width"auto" style"max-width: 600px"><el-form-item label"用户名" prop"name…

SqlServer还原系统库步骤及问题解决

还原master 需要切换到binn目录 Cd C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn 关闭服务 用单用户模式启动 SQL Server 默认实例 sqlservr.exe -m 直接单用户登录 恢复master备份文件 RESTORE DATABASE master FROM DISK E:\dbbak\txic_ke…

react 表格实现拖拽功能

项目背景 : react ant 单纯实现拖拽确实不难 , 我的需求是根据后台接口返回 , 生成对应的父子表格 , 并只可以拖拽子的位置 , 如图 后台返回的数据结构 (pid为0说明是父 , 子的pid等于父的id , 说明是父的子) 1 , 我先转成了树形结构且自己加上了key (注意 : key一定得是唯一的…

Resilience4j结合微服务出现的异常

Resilience4j结合微服务出现的异常 1、retry未生效 由于支持aop&#xff0c;所以要引入aop的依赖。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>2、circ…

gamit前导软件linus的root账号登录

1computer---etc- --lightdm-- 2进入超级管理员 gedit ./lightdm.conf [SeatDefaults] greeter-sessionunity-greeter user-sessionubuntu greeter-show-manual-logintrue allow-guestfalse 保存文档&#xff0c;关闭文档 3删除文档 users.conf删除 rm -f users.conf 4…

6. C++通过fork的方式实现高性能网络服务器

我们上一节课写的tcp我们发现只有第一个与之连接的人才能收发信息。他又很多的不足 高性能网络服务器 通过fork实现高性能网络服务器 我们通过fork进行改装之后就可以成百上千的用户进行连接访问&#xff0c;对于每一个用户来说我们都fork一个子进程。让后让每一个子进程都是…

人大金仓数据库大小写不敏感确认

1、图形化确认(管理—其他选项—预设选项) 2、命令行确认 # ksql -p 54321 -U system test # show enable_ci; 查看是否大小写敏感&#xff0c;on表示大小敏感&#xff0c;off表示大小写不敏感&#xff0c;使用某些项目的时候&#xff0c;需要设置数据库大小写不敏感&#…

C#发票查验接口提升财税服务效率与透明度

在传统模式下&#xff0c;代理记账工作往往涉及大量手工录入和核对发票信息的过程&#xff0c;不仅耗时费力&#xff0c;还容易出现人为错误。为解决这一行业痛点&#xff0c;翔云人工智能开放平台积极探索金融科技应用&#xff0c;提供了发票查验接口&#xff0c;实现发票信息…

全网唯一:触摸精灵iOS版纯离线本地文字识别插件

目的 触摸精灵iOS是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务&#xff0c;节省大量人工操作的时间。但触摸精灵的图色功能比较单一&#xff0c;无法识别屏幕上的图像&#xff0c;根据图像的变化自动执行相应的操作。本篇文章主要…

【TB作品】msp430f5529单片机墨水屏,口袋板,显示温度和万年历,tmp421温度,RTC时间

文章目录 一、部分程序二、展示三、全部代码下载 一、部分程序 int main(void) {WDTCTL WDTPW | WDTHOLD; //关闭看门狗init(); //屏幕初始化InitIIC(); //I2C初始化TMP_Init(); //tmp421初始化SetupRTC();_EINT();while (1){} }#pragma vectorRT…