首页 > 编程语言 >【Python基础】元组

【Python基础】元组

时间:2024-04-06 13:01:14浏览次数:34  
标签:last tuple Python 基础 元组 索引 names print

文章目录

因上努力

个人主页:丷从心.

系列专栏:Python基础

学习指南:Python学习指南

果上随缘


什么是元组

  • 如下定义的变量last_names存储的是元组
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names)
('赵', '钱', '孙', '李', '周', '吴')
  • 通过type()函数可以查看变量last_names的数据类型
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(type(last_names))
<class 'tuple'>

元组与列表的区别与联系

可变性
  • 列表是可变的,可以通过索引对其进行修改、添加或删除元素
number_list = [1, 2, 3]

number_list[0] = 0

print(number_list)
[0, 2, 3]
  • 元组是不可变的,一旦创建,就不能修改其中的元素
number_tuple = (1, 2, 3)

number_tuple[0] = 0

print(number_tuple)
Traceback (most recent call last):
  File "C:/Users/FOLLOW_MY_HEART/Desktop/Python Basics/【Python基础】元组/test.py", line 3, in <module>
    number_tuple[0] = 0
TypeError: 'tuple' object does not support item assignment
    • 通过索引修改元组的元素时会产生异常
使用场景
  • 由于元组是不可变的,因此在需要存储固定数据信息时,通常会选择使用元组
  • 列表则更适用于需要频繁修改、添加或删除元素的情况
相似性
  • 元组与列表都可以进行索引取值、切片操作和进行遍历

索引

  • 索引就是标记内存空间地址的一个数字,也可以称为下标
  • 对于元组last_names = ('赵', '钱', '孙', '李', '周', '吴'),索引从 0 0 0开始,在内存中的存储方式如下
索引0索引1索引2索引3索引4索引5
  • 索引也可以为负数,对于元组last_names = ('赵', '钱', '孙', '李', '周', '吴'),索引为负数时的情况如下
索引-1索引-2索引-3索引-4索引-5索引-6
示例
  • 通过使用[]加上索引的方式获取对应索引处的数据
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[0])
print(last_names[1])
print(last_names[2])
赵
钱
孙
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[-1])
print(last_names[-2])
print(last_names[-3])
吴
周
李
索引越界
  • 索引对应内存地址,是有范围的,对于元组last_names = ('赵', '钱', '孙', '李', '周', '吴'),其索引范围为 0 0 0到 5 5 5,如果使用索引“ 6 6 6”会发生索引越界,产生异常
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[6])
Traceback (most recent call last):
  File "C:/Users/FOLLOW_MY_HEART/Desktop/Python Basics/【Python基础】元组/test.py", line 3, in <module>
    print(last_names[6])
IndexError: tuple index out of range

切片

  • 切片就是截取操作对象中一部分数据的操作,例如对于元组last_names = ('赵', '钱', '孙', '李', '周', '吴'),可以通过切片获取到子元组('赵', '钱', '孙')
语法
tuple_object[起始索引:结束索引:步长]
  • 选取的数据范围从“起始索引”开始,到“结束索引”结束,但不包含结束索引处的数据,即数据只取到结束索引的前一位
  • 步长表示选取数据的间隔,不使用步长时默认步长为 1 1 1
示例
步长为正
  • 选取索引 0 0 0到 2 2 2包含的元素(不包含索引 3 3 3处的元素)
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[0:3])
('赵', '钱', '孙')
  • 如果“起始索引”为空则表示起始索引为 0 0 0
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[:3])
('赵', '钱', '孙')
  • 如果“结束索引”为空则表示从起始索引开始一直取到元组末尾
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[3:])
('李', '周', '吴')
  • 选取索引 1 1 1到最后一个元素之前的元素(通过负数索引的方式)
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[1:-1])
['钱', '孙', '李', '周']
  • 以 2 2 2为步长从元组开头取到元组末尾
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[::2])
('赵', '孙', '周')
步长为负
  • 如果步长为负,表示从右向左选取数据,此时“起始索引”应大于“结束索引”
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[3:0:-1])
('李', '孙', '钱')
    • 此时从右向左取到的是索引 3 3 3到索引 1 1 1包含的元素,不包含索引 0 0 0处的元素
  • 从元组末尾取到元组开头的元素(元组倒序)

last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[::-1])
('吴', '周', '李', '孙', '钱', '赵')

遍历元组

什么是遍历
  • 遍历就是通过循环的方式从stringlisttupledictset等序列数据类型中依次获取元素,这个过程称为遍历
for循环遍历
last_names = ('赵', '钱', '孙', '李', '周', '吴')

for last_name in last_names:
    print(last_name)
赵
钱
孙
李
周
吴
while循环遍历
last_names = ('赵', '钱', '孙', '李', '周', '吴')

i = 0
while i < len(last_names):
    print(last_names[i])

    i += 1
赵
钱
孙
李
周
吴
  • len()方法用于获取元组的长度

可变类型与不可变类型

  • 可变类型是指可以在原地修改的对象,而不可变类型是指不能在原地修改的对象
可变类型
  • 可变类型包括列表list、字典dict和集合set
  • 可以添加、删除或修改可变类型对象中的元素,而不会创建新的对象
  • 例如可以通过添加或删除列表中的元素来修改列表的内容,但并没有创建新的列表对象
不可变类型
  • 不可变类型包括整数int、浮点数float、布尔值bool、字符串str和元组tuple
  • 不可变类型的对象一旦创建,就不能修改其内容,如果需要对不可变类型进行修改,实际上是创建了一个新的对象,例如对字符串进行拼接操作时,实际上是创建了一个新的字符串对象
元组中的不可变与可变
  • 不能修改元组中的元素指的是,如果当前元组中的元素是不可变类型对象则不能修改,如果是可变类型对象在不修改元素对象的情况下可以修改可变类型对象元素中的值
示例
number_tuple = (1, [2, 3], 4)

number_tuple[1][0] = 0

print(number_tuple)
(1, [0, 3], 4)
  • number_tuple[1]处的元素是一个列表,是可变类型对象,可以修改其中的元素

标签:last,tuple,Python,基础,元组,索引,names,print
From: https://blog.csdn.net/from_2024_04_01/article/details/137406522

相关文章

  • 08元组_集合_布尔_类型的内置方法已经增删查改操作
    【一】元组类型的内置方法(tuple)【1】元组类型的定义元组是Python中的一种有序、不可变的数据类型。元组使用()来定义,可以包含任意类型的元素,包括数字、字符串、列表等。【2】定义在Python中,可以使用,来创建元组。通常也会建议使用小括号、尽管小括号并不是必须的。例如:......
  • day11 基础函数(二)
    知识回顾```python#函数:封装具有某种功能的代码块函数的定义def函数名():  代码函数名()#函数调用实参:相当于变量值(演员)形参:相当于变量名(角色) 必须参数(位置参数)就是必须按照正确的顺序将实参传入到函数中,实参和形参个数必须一一对应 默认......
  • Python基础笔记-day01
    Python基础-day1!!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失。观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:2022Python的web开发(完整版)入门全套教程,零基础入门到项目实战1.文档工具typora2.环境搭建安装Python解释器学习Python语法Python......
  • 《截流猎客系统》30节精选内容,从零基础做互联网项目的核心!
    最近不少朋友在问我关于《截流猎客系统》全套内容,这套内容最早是发布在时兼小职公众号,2022年发布的。后来因为在2023年时兼小职公众号封禁,我将内容重新发布在副业项目微商圈。全套内容之前在这个知乎账号也有发布过,但部分内容可能没有发布上,有些几篇存在断裂。为了方便老粉朋......
  • 【Mathematical Model】基于Python实现随机森林回归算法&特征重要性评估&线性拟合
    ​    前段时间在做遥感的定量反演,所以研究了一下回归算法,由于之前发的几篇博文都是定义好基础方程进行拟合的,不太满足我的需求。所以研究了一下随机森林回归的算法,之前使用随机森林都是做分类,这次做了回归算法也算是补全了RF算法的空缺了。今天抽空给大家分享一下使用P......
  • acwing 算法基础课(第三章 完整版)
     三、搜索与图论(一).DFS简介:通过系统的模拟栈实现,“走头无路”才往回退,不具最短性。回溯是该算法的关键。1.全排列问题(AcWing842.排列数字)(1)算法思想:       递归函数:假设求n=3时的全排列,函数入口为位置u(u从path数组第0号位置开始,当u为3时说明数组中0,1,2......
  • 【个人笔记】如何用 Python 编写激活码解锁程序
    目录前言第一步:编写激活码解锁程序(激活码.py)第二步:修改需要解锁的程序(1.py) 总结前言在软件开发中,有时候我们需要设计一种机制来保护程序,例如通过激活码来控制程序的使用权限。本文将介绍如何使用Python编写一个简单的激活码解锁程序,以及如何修改另一个程序来检测是否......
  • 【Python&RS】基于GDAL遥感影像分幅裁剪(固定尺寸)
    ​    之前分享过一篇分幅裁剪的文章:【Python&RS】基于GDAL遥感影像分幅裁剪,只不过这篇文章当时编写的逻辑是自己输入需要裁剪多少行多少列,由于大家可能并没有直观地希望自己裁剪多少行列,所以非常局限。今天跟大家分享一下使用固定尺寸对遥感影像进行分幅裁剪,即每张裁剪......
  • 移动端基础
    移动端基础一.了解二.视口1.视口形式2.视口标签3.viewport设置三.二倍图1.像素比2.多倍图3.背景缩放及使用(background-size)4.多倍图切图四.移动端开发选择1.单独制作2.响应式3.总结五.移动端技术解决方案1.初始化2.盒子模型3.特殊样式六.常见布局一.了解二.视......
  • 华为OD机试 - 猴子爬山(Java & JS & Python & C & C++)
    须知哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持文章目录须知题目描述输入描述输出描述用例解题思路:Java代码:JS代码:Python代码:C代码:C++代码:题目描述一天一只顽猴想去从山脚爬到山顶,途中经过一个有个N个台......