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

06_Python数据类型_元组

在这里插入图片描述

Python的基础数据类型

  • 数值类型:整数、浮点数、复数、布尔
  • 字符串
  • 容器类型:列表、元祖、字典、集合

元组

  • 元组(Tuple)是一种不可变的序列类型,与列表类似,但有一些关键的区别。
  • 本质:只读的列表(list)

定义元组

元组是由圆括号 () 包围的元素集合,元素之间用逗号分隔。元组一旦创建,其内容不能被修改。

# 创建一个空元组
empty_tuple = ()# 创建一个包含几个元素的元组
my_tuple = (1, 2, 3, 'a', 'b', 'c')

访问元组元素

与列表一样,元组中的元素是有序的,可以通过索引来访问。

# 访问第一个元素
first_element = my_tuple[0]  # 结果是 1
print(first_element)
# 访问最后一个元素
last_element = my_tuple[-1]  # 结果是 'c'
print(last_element)

元组切片

元组也支持切片操作。

# 获取从索引1到索引3(不包括索引3)的元素
sub_tuple = my_tuple[1:4]  # 结果是 (2, 3, 'a')
print(sub_tuple)

元组不可变性

元组是不可变的,这意味着你不能修改元组中的元素。

# 尝试修改元组中的元素会导致TypeError
# my_tuple[0] = 'one'  # 这行代码会抛出错误

元组与列表的转换

可以使用 tuple() 函数将列表转换为元组,使用 list() 函数将元组转换为列表。

# 将列表转换为元组
my_list = [1, 2, 3]
my_tuple = tuple(my_list)
print(my_tuple)
# 将元组转换为列表
my_list_again = list(my_tuple)
print(my_list_again)

元组的优势

尽管元组是不可变的,但它们在以下情况下非常有用:

  • 当你需要确保数据不会被意外修改时。
  • 当你需要一个不可变的序列作为字典的键时。
  • 当你从函数返回多个值时。

元组运算符

元组支持以下运算符:

  • 索引运算符 []
  • 切片运算符 [:]
  • 成员运算符 in 和 not in
  • 身份运算符 is 和 is not

元组与浅拷贝、深拷贝

由于元组是不可变的,通常不需要对元组进行浅拷贝或深拷贝。当你尝试对元组进行浅拷贝或深拷贝时,实际上会返回元组本身,因为它的内容无法改变。

import copy# 浅拷贝和深拷贝元组
my_tuple = (1, 2, 3)
shallow_copied_tuple = copy.copy(my_tuple)  # 返回元组本身
deep_copied_tuple = copy.deepcopy(my_tuple)  # 也返回元组本身
# 在这里,shallow_copied_tuple 和 deep_copied_tuple 都是 my_tuple 的引用,因为元组不可变,所以没有必要创建副本。
print(id(shallow_copied_tuple))
print(id(deep_copied_tuple))

附件

本文对应的jupyter notebook源码链接,欢迎下载练习:https://download.csdn.net/download/fx_yzjy101/89757860

如有问题请留言。

http://www.lryc.cn/news/439147.html

相关文章:

  • 【Vue】- ref获取DOM元素和购物车案例分析
  • 【AI大模型】ChatGPT模型原理介绍(下)
  • Python数据分析与可视化实战指南
  • react18基础教程系列-- 框架基础理论知识mvc/jsx/createRoot
  • 牛客周赛 Round 60 折返跑(组合数学)
  • 深入浅出Java匿名内部类:用法详解与实例演示
  • 数据库MySQL、Mariadb、PostgreSQL、MangoDB、Memcached和Redis详细介绍
  • 【ArcGIS Pro实操第七期】栅格数据合并、裁剪及统计:以全球不透水面积为例
  • 【Linux】Image、zImage与uImage的区别
  • 算子加速(3):自定义cuda扩展
  • 信息安全数学基础(14)欧拉函数
  • 7-17 汉诺塔的非递归实现
  • word文档无损原样转pdf在windows平台使用python调用win32com使用pip安装pywin32
  • 海康威视相机在QTcreate上的使用教程
  • 进程状态、进程创建和进程分类
  • java后端请求调用三方接口
  • C#使用TCP-S7协议读写西门子PLC(三)
  • 铝型材及其常用紧固件、连接件介绍
  • 【裸机装机系列】7.kali(ubuntu)-安装开发所需工具
  • [C语言]第九节 函数一基础知识到高级技巧的全景探索
  • 1.1 计算机网络基本概述
  • Linux环境基础开发工具使用(gcc/g++与makefile)
  • PointNet++改进策略 :模块改进 | EdgeConv | DGCNN, 动态图卷积在3d任务上应用
  • FFmpeg源码:skip_bits、skip_bits1、show_bits函数分析
  • 加密
  • Kibana:如何使用魔法公式创建具有影响力的可视化效果?(第 1 部分)
  • 【C++】多态and多态原理
  • C# 实现二维数据数组导出到 Excel
  • nlohmann::json中有中文时调用dump转string抛出异常的问题
  • Unity中InputField一些属性的理解