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

python基础-基本数据类型深入-2.1

目录

元组

什么是元组(tuple)

元组练习-1

元组的基本操作

元组常用内建函数

列表和元组的区别与总结

元组练习-2

元组练习-3

元组

什么是元组(tuple)

与列表(list)一样,元组(tuple)也是序列,唯一的区别在于元组是不能修改的(你可能注意到了,字符串也不能修改)。元组语法很简单,只要将一些变量用逗号(,)分隔,就能自动创建一个元组。


a = 1,2,3
print(a)print((1,2,3))

1、元组还可用圆括号(())括起(这也是通常采用的做法)。

2、空元组用两个不包含任何内容的圆括号表示。

3、如何表示只包含一个值的元组呢?这有点特殊:虽然只有一个值,也必须在它后面加上逗号。

print((12),type((12)))print((12,),type((12,)))输出:12 <class 'int'>
(12,) <class 'tuple'>

由此可见,加上逗号就变成了元组!

元组练习-1
定义一个元组描述
请从标准输入流(控制台)中获取一个整型数字变量 num_1,一个字符串变量 num_2,请你定义一个元组,包含这两个变量,并打印出来这个元组和它的类型。

num_1 = int(input())
num_2 = eval(input())tuple_1 = (num_1,num_2)
print(tuple_1)
print(type(tuple_1))

元组的基本操作

创建一个元组(tuple)

通过将所有项目(元素)放在括号内 ()(以逗号(,)分隔)来创建元组。括号是可选的,但是,使用括号是一个好习惯。

元组可以具有任意数量的项,并且它们可以具有不同的类型(整数(int),浮点数(float),列表(list),字符串(string)等)。

也可以在不使用括号的情况下创建元组。这称为元组包装。

用一个元素创建一个元组有点特殊。

只有一个元素的元组,括号内仅包含一个元素是不够的。我们将需要一个逗号结尾来表明它实际上是一个元组。


tuple_1 = ("hi")
print(type(tuple_1))tuple_2 = (1)
print(type(tuple_2))tuple_3 = ("hi",)
print(type(tuple_3))tuple_4 = (1.2)
print(type(tuple_4))输出:
<class 'str'>
<class 'int'>
<class 'tuple'>
<class 'float'>

可以看到,元组可以存储多种数据类型!


访问元组元素

我们可以通过多种方式访问元组的元素。

1.索引

我们可以使用索引运算符 [] 访问索引从 0 开始的元组中的项目。

因此,具有 6 个元素的元组将具有从 05 的索引。尝试访问元组之外的元素(例如 67...)将引发 IndexError

索引必须是整数;因此我们不能使用 float 或其他类型。如果使用会导致 TypeError


2.负索引

Python 允许对其序列进行负索引。

索引 -1 表示最后一项,-2 表示倒数第二项,依此类推。

tuple_1 = ('h','e','l','l','o','1')print(tuple_1[-1])
print(tuple_1[-6])输出:
1
h

3.切片

我们可以使用切片运算符冒号 : 访问元组中的一系列项目。

tuple_1 = ('h','e','l','l','o','1')print(tuple_1[2:5])
print(tuple_1[0:5])输出:
('l', 'l', 'o')
('h', 'e', 'l', 'l', 'o')

4、更换元组

与列表不同,元组是不可变的。

这意味着一旦分配了元组的元素就无法更改。但是,如果元素本身是可变的数据类型(如列表),则可以更改其嵌套项目。

我们还可以将元组分配给不同的值(重新分配)。

# 定义一个内嵌列表的元组
tuple_1 = (4, 2, [3], [9])
# 对列表进行添加操作
tuple_1[2].append(5)
print(tuple_1)
my_tuple = ("shell","bash")
# 将元组分配给不同的值
tuple_2 = my_tuple
print(tuple_2)输出:
(4, 2, [3, 5], [9])
('shell', 'bash')

我们可以使用 + 运算符来合并两个元组。这也称为串联

我们还可以使用运算符 *,将元组中的元素重复给定次数。

无论 +* 操作会导致新的记录。

tuple_1 = (1, 2, 3)
tuple_2 = (4, 5, 6)
# 合并两个元组并赋值给新的变量
tuple_3 = tuple_1 + tuple_2
print(tuple_3)
# 将元组中的元素重复 3 次
tuple_4 = ("shell",) * 3
print(tuple_4)输出:
(1, 2, 3, 4, 5, 6)
('shell', 'shell', 'shell')

5、删除元组

我们不能更改元组中的元素。这也意味着我们无法删除或删除元组中的项目。

但是可以使用关键字 del 完全删除一个元组。

tuple_1 = ('s','h','e','l','l')# 不能删除条目
# TypeError: 'tuple_1'对象不支持项目删除
# del my_tuple[3]# 可以删除整个元组
del tuple_1# NameError: 未定义名称“ tuple_1”
print(tuple_1) #如果使用del删除元组,再次打印就会报错!

元组常用内建函数

1、元组方法

元组(tuple)不提供添加项目或删除项目的方法。仅以下两种方法可用。

方法描述
count(x)返回元组内相同元素的数量 x
index(x)返回等于 x 的第一项的索引
my_tuple = ('h','e','l','l','o',)print(my_tuple.count('e'))
print(my_tuple.index('l'))输出:
1
2

2、其他元组操作

2.1元组成员资格测试

我们可以使用关键字 in 来测试项目是否存在于元组中。

tuple_1= ('h','e','l','l','o',)
print('s' in tuple_1)
print('l' in tuple_1)输出:False
True

2.2遍历元组

使用 for 循环,我们可以遍历元组中的每个元素。

for ls in ('shell','bash'):print("hello",ls)输出:
hello shell
hello bash

元组相比于列表的优势

由于元组与列表非常相似,因此它们在类似情况下也都使用。

但是,在列表上实现元组具有某些优点。下面列出了一些主要优点:

  • 我们通常将元组用于异构(不同)数据类型,将列表用于同类(相似)数据类型。
  • 由于元组是不可变的,因此遍历元组要比使用list更快。因此,性能略有提升。
  • 包含不可变元素的元组可以用作字典的键。对于列表,这是不可能的。
  • 如果您拥有不变的数据,则将其实现为元组可以确保其保持写保护。

列表和元组的区别与总结

列表(list)

  1. 列表是动态数组,可变(增加、修改不会使 ID 发生变化)且可以重设长度(包括增加、删除、修改元素)
  2. 列表中的元素可重复,元素之间的类型可以不同,元素的值可以修改
  3. 使用 [] 来定义列表
  4. 可以索引,可以切片
  5. 列表常用来保存多个独立的同质(homogeneous)对象,例如北上广深的人口数量
  6. 由于列表是动态数组,支持 resize 操作,因此当一个列表没有空位放新的元素的时候,Python 会创建一个新的列表,把老的列表里面的元素以及新添加的元素放进去,同时把旧的列表销毁。
  7. 当我们试图创建一个有 n 个元素的列表时,Python 会创建一个可以放 n+k 个元素的列表,为未来添加元素预留了 k 个位置,这样可以减少分配空间和内存复制的次数(很耗费计算资源),从而节省计算资源。
  8. 所以说保存同样的元素个数的时候,元组占用的空间更小。

元组(tuple)

  1. 元组是静态数组,不可变且内部数据一旦创建便无法改变(此外,数字、字符串也属于不可变类型)

  2. 元组里的元素、元组的大小在创建完成以后不能改变,如果赋新的值则 ID 会发生变化

  3. 注意,这里的不可变指的是元组中每一个元素对象的引用(指针)不可变,但是如果某个元素对象本身是可变的对象,那么你是可以对这个可变对象进行修改的。例如,元祖里面有一个元素是列表,这个列表里面的内容是可以修改的。

  4. 元组里元素的类型可以不同

  5. 使用 () 来定义元组

  6. 可以切片、可以索引

  7. 元组常用来描述一个不会改变的事物的多个异质(heterogeneous,对比上面的“同质”,意思是不同位置的元素表达不同的意思)属性,例如一个城市的经纬度。这也是为什么元组不可变而列表可变的原因,因为列表储存同质的对象,例如北上广深的人口数,我们可以再加上成都苏州的人口数、或者删掉深圳的人口数也没有问题,但是元组里面一个城市的经纬度删掉一个或者修改一个是没有意义的。

  8. 关于可变与不可变的另一个例子:你外出散步的时候可以用元组 (x,y) 描述当前的经纬度,如果你想记录自己的轨迹,那么可以用列表记录每一秒的 [(x,y)]

  9. 由于字典的 key 必须是不可变类型,因此列表不能作为字典的 key,但是元组可以

  10. 如果实在想修改已经定义好的元组:

    ①可以通过切片来实现删除元素的功能;

    ②可以通过 + 运算来实现拼接的功能,类似于列表的 resize 操作

  11. 创建元组的速度比创建列表的速度快 3-5 倍。一般不再用到的变量所占用的资源会被释放还给操作系统,但是长度为 1-20 的元组即使不再使用了,也不会把它们占用的资源立刻还给操作系统,而是留作未来使用,这样在以后创建同样大小的元组的时候,就不用重新申请内存了。


元组练习-2
分割元组描述
输入一个长度为偶数的元组 my_tuple,输出两个元组,一个是元组的前一半,一个是元组的后一半。
my_tuple = eval(input())
l = int(len(my_tuple))/2
print(my_tuple[:l])
print(my_tuple[l:])输出:
(1, 2)
(3, 4)

元组练习-3
元素在元组内的出现次数输入一个由整数组成的元组 my_tuple 和一个整数 x,输出元组内 x 的个数。
my_tuple = eval(input())
x = int(input())
print(my_tuple.count(x))

相关文章:

python基础-基本数据类型深入-2.1

目录 元组 什么是元组&#xff08;tuple&#xff09; 元组练习-1 元组的基本操作 元组常用内建函数 列表和元组的区别与总结 元组练习-2 元组练习-3 元组 什么是元组&#xff08;tuple&#xff09; 与列表&#xff08;list&#xff09;一样&#xff0c;元组&#xff0…...

Android LiveData Cannot add the same observer with different lifecycles

https://www.yxhuang.com/2022/05/29/livedata-add-some-observer-error/ 这篇文章已经解释的很好了。 其实在去年我写的文章&#xff0c; https://blog.csdn.net/jzlhll123/article/details/126593235 中提到了&#xff0c; 其实不论是java或者kotlin&#xff0c;不引用外部的…...

MongoDB聚合运算符:$cmp

文章目录 语法用法举例 $cmp聚合运算符返回连个值的比较结果。 语法 { $cmp: [ <expression1>, <expression2> ] }表达式可以是任何类型&#xff0c;使用标准的BSON比较顺序对不同类型的值进行比较。 用法 $cmp对两个值进行比较&#xff0c;返回&#xff1a; …...

【C++基础知识详细记录】

一、基础知识 C基础知识点的汇总涵盖了许多方面&#xff0c;包括但不限于以下内容&#xff1a; 1. 常量定义 使用#define宏定义常量&#xff1a; #define PI 3.14159265358979323846 // 宏定义一个浮点型常量PI使用const关键字定义常量&#xff1a; const int MAX_SIZE 100;…...

Socket网络编程(五)——TCP数据发送与接收并行

目录 主要实现需求TCP 服务端收发并行重构启动main方法重构重构分离收发消息的操作重构接收消息的操作重构发送消息TCPServer调用发送消息的逻辑监听客户端链接逻辑重构Socket、流的退出与关闭 TCP 客户端收发并行重构客户端 main函数重构客户端接收消息重构客户端发送消息重构…...

2024最新-ubuntu22.04安装最新版QT6.6~6.8教程

​ 1. 在官网下载 online_installer&#xff1a; https://download.qt.io/archive/online_installers/4.7/qt-unified-linux-x64-4.7.0-online.run 或者直接镜像站下载&#xff1a; http://mirrors.ustc.edu.cn/qtproject/archive/online_installers/4.7/qt-unified-linux-x6…...

STM32------分析GPIO寄存器

一、初始LED原理图 共阴极led LED发光二极管&#xff0c;需要有电流通过才能点亮&#xff0c;当有电压差就会产生电流 二极管两端的电压差超过2.7v就会有电流通过 电阻的作用 由于公式IV/R 不加电阻容易造成瞬间电流无穷大 发光二极管工作电流为10-20MA 3.3v / 1kΩ 3.…...

数学实验-Matlab使用(1)

使用方法以及笔记均在文件中 class1_func1.m function f class1_func1(x) % f为输出&#xff0c;输出有多个时需要用中括号以矩阵的方式包起来 % x为输入f sin(x)class1_func2.m function [a,b,u,v] class1_func2(x,y)[a,b] eig(x)[u,v] eig(y)class1.m % 当语句后有…...

kafka文件存储机制和消费者

1.broker文件存储机制 去查看真正的存储文件&#xff1a; 在/opt/module/kafka/datas/ 路径下 kafka-run-class.sh kafka.tools.DumpLogSegments --files ./00000000000000000000.index 如果是6415那么这个会存储在563的log文件之中&#xff0c;因为介于6410和10090之间。 2.…...

《汇编语言》- 读书笔记 - 第15章-外中断

《汇编语言》- 读书笔记 - 第15章-外中断 15.1 接口芯片和端口15.2 外中断信息1. 可屏蔽中断&#xff08;Maskable Interrupt&#xff09;2. 不可屏蔽中断&#xff08;Non-Maskable Interrupt&#xff09;设计思想 15.3 PC 机键盘的处理过程1. 键盘输入2. 引发 9 号中断3. 执行…...

【Vue3】CSS 新特性

:slotted <template> <!-- App.vue--><Son ><div class"a">我要插入了</div></Son> </template><script setup lang"ts"> import Son from ./components/Son.vue </script><style></sty…...

四信水电站泄洪预警方案,精准提升防汛应急水平

2022年5月水利部办公厅发布《关于开展水库泄洪设施专项排查整改的紧急通知》&#xff0c;为坚决贯彻落实关于水库大坝安全的重要指示批示精神、关于保障水库泄洪通道通畅的批示要求&#xff0c;全力防范水库可能出现的重大险情&#xff0c;确保水库安全度汛。 2023年3月国家能源…...

k8s中容器的调度与创建:CRI,cgroup

container调度与创建 选自&#xff1a;K8s、CRI与container - packy的文章 - 知乎 https://zhuanlan.zhihu.com/p/102897620 Cgroup创建&#xff1a; cgexec -g cpu,memory:$UUID \ > unshare -uinpUrf --mount-proc \ > sh -c "/bin/hostname $UUID &…...

Unity安装与简单设置

安装网址&#xff1a;https://unity.cn 设置语言&#xff1a; 设置安装位置&#xff1a;否则C盘就会爆了 获取一个个人的资格证&#xff1a; 开始安装&#xff1a; 安装完毕。 添加模块&#xff1a;例如简体中文 新建项目&#xff1a; 布局2*3、单栏布局、 设置…...

数据库的介绍、分类、作用和特点

数据库是用来存储、管理和检索数据的集合系统。根据数据处理模型的不同&#xff0c;数据库可以分为多种类型&#xff0c;主要包括&#xff1a; 1、关系型数据库&#xff08;RDBMS&#xff09;&#xff1a; 介绍&#xff1a;关系型数据库使用表格形式来存储数据&#xff0c;并通…...

【Unity】机器人末端执行器仿真

机械手臂的末端执行器使用多项式来计算转动角度可能有几个原因&#xff1a; 精确控制&#xff1a;机械臂的运动通常需要高度的精确性&#xff0c;特别是在精密工作或复杂运动轨迹的情况下。多项式&#xff0c;特别是高阶的&#xff0c;可以很好地近似复杂的非线性关系和运动轨迹…...

更换个人开发环境后,pycharm连接服务器报错Authentication failed

原因&#xff1a;服务器中更换个人开发环境后&#xff0c;密码变了。 解决&#xff1a;在pycharm中修改服务器开发环境密码即可。 1 找到Tools-Depolyment-Configuration 2 点击SSH Configuration后的省略号 3 修改这里面的Password即可...

E - Bad Juice

解题思路 由于最后返回一个01字符串表示所选人的状态要求人数最少&#xff0c;即字符串长度最少而要用最少的字符&#xff0c;找出则返回的字符为二进制下的编号这样利用了所有的01字符号人表示二进制下位的情况注意对于2的次方项&#xff0c;只需要有位&#xff0c;可以用位均…...

用HTML5的<canvas>元素实现刮刮乐游戏

用HTML5的&#xff1c;canvas&#xff1e;元素实现刮刮乐游戏 用HTML5的<canvas>元素实现刮刮乐&#xff0c;要求&#xff1a;将上面的“图层”的图像可用鼠标刮去&#xff0c;露出下面的“图层”的图像。 示例从简单到复杂。 简单示例 准备两张图像&#xff0c;我这…...

TypeScript + react 中 TypeScript 的加入后 , 有哪些优化项目

在使用 TypeScript 结合 React 进行开发时&#xff0c;TypeScript 提供了许多优化和增强代码质量的方式。以下是一些关键的优化操作和最佳实践&#xff1a; 强类型组件属性&#xff08;Props&#xff09;和状态&#xff08;State&#xff09;: 使用接口或类型别名定义组件的 pr…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

git: early EOF

macOS报错&#xff1a; Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...