【Python】列表和元组

文章目录

  • 概念
  • 创建列表
  • 访问下标
    • 通过下标来修改列表元素
    • 获取列表长度
    • 下标可以写成负数
  • 切片操作
    • 省略后边界
    • 省略前边界
    • 省略前后边界
    • 带有步长的切片
  • 遍历列表元素
    • 使用 for 循环
    • 使用 for 循环访问下标的方式
    • 使用 while 循环
  • 新增元素
    • 在末尾新增
    • 在任意位置新增
  • 查找元素
    • 判定元素是否存在
    • 判定元素的位置
  • 删除元素
    • 删除列表末尾元素
    • 删除任意位置元素
    • 按照值进行删除
  • 列表拼接
    • 使用“`+`”拼接
    • 使用 `extend` 进行拼接
    • 使用“`+=`”拼接
  • 关于元组
    • 创建元组
    • 创建元组时指定初始值
    • 元组中的元素可以使任意类型
    • 通过下标进行访问
    • 切片
    • 遍历元组
    • 查找元素
    • 拼接元组
    • 为什么要有元组

概念

变量就是内存空间,用来表示/存储数据
如果表示的数据少,直接定义几个变量就行了

num1
num2
num3

但有时候要表示的数据比较多

Python 中,列表和元组就是一种可以用一个变量来表示很多数据的机制(类似其他语言中的数组

列表和元组,大部分功能都是差不多的,但是有一个功能有非常明显的区别:

  • 列表是可变的,创建好了之后,随时可以改
  • 元组是不可变的,创建好了之后改不了,若想改,只能丢弃旧的,再创建一个新的

列表就是买散装辣条,装好了袋子之后,随时可以把袋子打开,再往里多加辣条或者拿出去一些辣条
元组就是买包装辣条,厂家生产好了辣条之后,一包就是固定的这么多,不能变动了
image.png

创建列表

  1. 直接使用字面值来创建
a = [1, 2, 3, 4]
print(type(a))
print(a)"""
运行结果
<class 'list'>
[1, 2, 3, 4]
"""
  • []就代表一个空的列表
  • 可以在 [] 中指定列表的初始值,
  1. 使用 list() 来创建
b = list()
print(type(b))"""
运行结果
<class 'list'>
"""

C++/Java 中要求一个数组里只能存放相同的变量,但在 Python 中没有类型要求

a = [1, 'hello', True, [1, 2, 3]]  
print(a)"""
运行结果
[1, 'hello', True, [1, 2, 3]]
"""

访问下标

通过下标访问的方式,来获取列表中的元素
[] 放到一个列表变量的后面,同时 [] 中写上一个整数,此时他就是下标访问运算符。[] 中间写的这个证书,就称为“下标”或者“索引

a = [1, 2, 3, 4]
print(a[2])"""
运行结果
3
"""
  • Python 中的下标,是从 0 开始计数的

通过下标来修改列表元素

a = [1, 2, 3, 4]
a[2] = 100
print(a)"""
运行结果
[1, 2, 100, 4]
"""
  • 这是列表的功能,如果是元组的话,就只能读,不能改

由于下标是从 0 开始计算的,那么对于列表来说,下标的有效范围是 0~长度-1。当我们的下标超出有效范围的时候,尝试访问就会报错 `


获取列表长度

a = [1, 2, 3, 4]
print(len(a))"""
运行结果
4
"""
  • len 可以穿字符串、列表、元组、字典、自定义得嘞…(动态类型)

下标可以写成负数

a = [1, 2, 3, 4]
print(a[lem(a)-1])
print(a[-1])"""
运行结果
3
3
"""
  • -1 就等价与 len(a) - 1

切片操作

切片操作是一个比较高效的操作,进行切片的时候,只是取出原有列表中的一个部分,并不涉及到“数据的拷贝”。假设有一个很大的列表进行切片,切片的范围也很大,即使如此,切片操作仍然非常高效

切片操作中,[] 中有两个数字,表示了一段区间

a = [1, 2, 3, 4]
print(a[1:3])"""
运行结果
[2, 3]
"""
  • 1 表示开始区间的下标;3 表示结束区间的下标
  • 包含 1,不包含 3[1, 3)

省略后边界

a = [1, 2, 3, 4]
print(a[1:])"""
运行结果
[2, 3, 4]
"""
  • a[1] 开始,一直读取到整个列表结束

省略前边界

a = [1, 2, 3, 4]
print(a[:2])"""
运行结果
[1, 2]
"""
  • 从列表的 a[0] 开始读,一直读到结束的后边界

省略前后边界

a = [1, 2, 3, 4]
print(a[:])"""
运行结果
[1, 2, 3, 4]
"""
  • 省略前后边界就是打印整个列表

带有步长的切片

切片操作,还可以指定“步长”,range

a = [1, 2, 3, 4 ,5 , 6, 7 ,8]
print(a[::1])
print(a[::2])"""
运行结果
[1, 2, 3, 4 ,5 , 6, 7 ,8]
[1, 3, 5, 7]
"""
  • 多加一个 :,再多加一个数字,这个数字就是步长
    • 这里表示:每隔两个元素,取一个列表元素
  • 步长也可以设置为负数,当步长为负数时,意思是从后往前来取元素

遍历列表元素

遍历” 指的是把元素一个一个的取出来,再分别进行处理

使用 for 循环

a = [1, 2, 3, 4, 5]  
for elem in a:  print(elem)
  • 在这个遍历过程中,循环里面的逻辑不一定是打印,还可以是别的
  • elem 代表列表里的每个元素
  • for in 后面的这个东西,要求是一个可迭代对象
    • 列表就是一个可迭代对象

使用 for 循环访问下标的方式

a = [1, 2, 3, 4, 5]
for i range(0, len(a)):print(a[i])
  • 相比于上面的方式,这里不仅可以打印,还可以进行修改

使用 while 循环

a = [1, 2, 3, 4, 5]
i = 0
while i < len(a):print(a[i])i += 1

新增元素

在末尾新增

使用 append 往列表末尾新增一个元素

a = [1, 2, 3, 4, 5]  
a.append(77)  
a.append('hello')  
print(a)"""
运行结果
[1, 2, 3, 4, 5, 77, 'hello']
"""
  • 此处的 append 是搭配列表对象 a 一起使用的,而不是作为一个独立的函数
    • typeprintinputlen… 都是独立的函数
  • 这种要搭配对象来使用的函数function)也叫做方法method
    • 在 Python 中,对象就可以视为“变量

在任意位置新增

可以使用 insert 方法,让列表的任意位置来新增元素

a = [1, 2, 3, 4, 5]
a.insert(1, 'hello')
print(a)"""
运行结果
[1, 'hello', 2, 3, 4, 5]
"""
  • a[1] 的位置新增 ’ hello ’ 字符串
  • 如果输入的 index 超过列表的长度,那就直接放在末尾

查找元素

判定元素是否存在

a = [1, 2, 3, 4]
print(1 in a)
print(10 in a)
print(1 not in a)
print(10 not in a)"""
运行结果
True
False
False
True
"""
  • 使用 in 来判定某个元素是否在列表中存在
  • 使用 not in 来判断某个元素在列表中是否不存在

判定元素的位置

a = [1, 2, 3, 4]
print(a.index(2))"""
运行结果
1
"""
  • 使用 index 方法,来判定当前元素在列表中的位置,得到一个下标
  • 找不到的时候就会直接报出异常

删除元素

删除列表末尾元素

a = [1, 2, 3, 4]  
a.pop()  
print(a)"""
运行结果
[1, 2, 3]
"""
  • 使用 pop 方法,删除列表中最末尾的元素

删除任意位置元素

a = [1, 2, 3, 4]  
a.pop(1)  
print(a)"""
运行结果
[1, 3, 4]
"""
  • 使用 pop 方法删除任意位置元素,pop 参数可以传一个下标过去

按照值进行删除

不需要知道下标是什么,只需要知道要删除的值是什么就可以了

a = ['aa', 'bb', 'cc', 'dd']  
a.remove('cc')  
print(a)"""
运行结果
['aa', 'bb', 'dd']
"""

列表拼接

使用“+”拼接

使用 + 能够把两个列表拼接在一起

a = [1, 2, 3, 4]  
b = [5, 6, 7, 8]  
c = a + b  
d = b + a
print(c) 	
print(d)"""
运行结果
[1, 2, 3, 4, 5, 6, 7, 8]
[5, 6, 7, 8, 1, 2, 3, 4]
"""
  • 使用 + 拼接列表的时候,只是针对当前列表的内容生成了一个更大的新的列表
  • 原有列表的内容是不变的

使用 extend 进行拼接

a = [1, 2, 3, 4]  
b = [5, 6, 7, 8]  
c = a.extend(b)  
print(a)  
print(b)  
print(c)
"""
运行结果
[1, 2, 3, 4, 5, 6, 7, 8]
[5, 6, 7, 8]
None
"""
  • 这个拼接是把最后一个列表的内容拼接到前一个列表里面
  • None 是一个特殊的变量值,表示什么都没有
    • extend 方法,其实是没有返回值的,拿一个变量来接收一个没有返回值的方法的返回值
  • 谁使用 extend 方法,就拼在谁的后面

使用“+=”拼接

a = [1, 2, 3, 4]  
b = [5, 6, 7, 8]  
a += b 
print(a)  
print(b)  
"""
运行结果
[1, 2, 3, 4, 5, 6, 7, 8]
[5, 6, 7, 8]
"""
  • extend 的效果是类似的
  • 但执行过程是不一样的
    • a += b 等价于 a = a + b;又创建了一个大列表,然后将小的装进去,再将大列表的值赋给 a 里面,最后将 a 的旧值释放
    • a.extend(b) 则是直接把 b 的内容拼到了 a 的后面,更高效,省去了数据拷贝和释放的过程

关于元组

创建元组

a = ()
b = tuple()
print(type(a))
print(type(b))"""
运行结果
<class 'tuple'>
<class 'tuple'>
"""

创建元组时指定初始值

a = (1, 2, 3, 4)
print(a)"""
运行结果
(1, 2, 3, 4)
"""

元组中的元素可以使任意类型

a = (1, 2, 'hello', True, [])
print(a)"""
运行结果
(1, 2, 'hello', True, [])
"""

通过下标进行访问

a = (1, 2, 3, 4, 5)
print(a[1])
print(a[-1])"""
运行结果
2
5
"""
  • 下标也是从 0 开始,len-1 结束
  • 当访问的下标超过 len - 1,会报错

切片

通过切片来获取元组中的一个部分

a = (1, 2, 3, 4)
print(a[1:3])
  • 这里的操作和列表是一摸一样的

遍历元组

a = (1, 2, 3, 4)
for elem in a:print(elem)
  • 和前面列表操作一样

查找元素

a = (1, 2, 3, 4, 5)
print(3 in a)
print(22 in a)
  • 和列表的操作一样

拼接元组

a = (1, 2, 3)
b = (4, 5, 6)
print(a + b)
  • 和列表的操作一样

为什么要有元组

在协同开发的时候,一个程序员 A 实现一些功能,提供给程序员 B 使用。A 写好一些函数,让 B 去调用
期间函数肯定要传参
B 在传参的时候就可能会纠结一个问题“我把我的参数传过去了,A 的函数里面是否会把我的参数的内容给改了呢”,如果使用元组作为参数,就可以避免这样的纠结

元组不可修改==>不可变对象

不可变对象,是可以哈希的

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

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

相关文章

Python酷库之旅-第三方库Pandas(096)

目录 一、用法精讲 411、pandas.DataFrame.values属性 411-1、语法 411-2、参数 411-3、功能 411-4、返回值 411-5、说明 411-6、用法 411-6-1、数据准备 411-6-2、代码示例 411-6-3、结果输出 412、pandas.DataFrame.axes属性 412-1、语法 412-2、参数 412-3、…

背包问题【算法 07】

背包问题 背包问题是经典的计算机科学问题之一&#xff0c;涉及到如何在有限资源的约束下&#xff0c;选择最优的物品组合&#xff0c;以最大化收益。这个问题在现实中有广泛的应用&#xff0c;例如资源分配、物流调度和投资组合优化等。本文将详细介绍背包问题的定义、解决方法…

iphone问题笔记

拼音打字显示一些不相干的词 原因&#xff1a;开启了自动改正&#xff0c;傻逼iphone总以为你打错了。 计算器没有退格键&#xff1f; 解决方法&#xff1a;按住数字往右滑是退格。 关机重启必须去设置里&#xff1f; 连按五次锁屏可以选择关机。

如何选择适合自己的开放式耳机?五款实力出众爆款安利!

开放式耳机以其不侵入耳道的设计&#xff0c;为耳朵提供了更轻的负担&#xff0c;同时保护了耳道健康&#xff0c;这与传统的头戴式或入耳式耳机相比&#xff0c;在长时间佩戴时更能减少不适感。市场上的开放式耳机种类繁多&#xff0c;要找到一款真正满意的产品可能有些困难。…

文件—python

一、文件编码 对于同一份文件&#xff0c;人的视角和计算机的视角是不相同的&#xff0c;人看到的是文字&#xff0c;计算机看到的0和1组成的编码。因为计算机只能识别0和1&#xff0c;无法直接识别文字&#xff0c;那我们是如何在电脑上看到文字的呢&#xff1f; 计算机按照一…

【逐行注释】MATLAB下的IMM-EKF代码

IMM-EKF 基于EKF的多模型交互。以CV和CT两个模型进行交互&#xff0c;这里对代码进行逐行注释。 注释较多&#xff0c;个人理解的时候如果有误&#xff0c;欢迎指正。 每一行都有注释&#xff1a; 模型概况 二维平面上的运动模型&#xff0c;由CV和CT构成&#xff0c;基于…

C++:vector篇

前言&#xff1a; 本篇仅介绍vector中常用的函数接口&#xff0c;如果需要详细的请到官网查看。 vector是一种动态数组&#xff0c;能够自动调整大小。与数组类似&#xff0c;vector使用连续内存来存储元素&#xff0c;允许高效访问&#xff0c;但可以动态增加容量。为了应对容…

达梦数据库的系统视图v$tablespace

达梦数据库的系统视图v$tablespace 在达梦数据库&#xff08;DM Database&#xff09;中&#xff0c;V$TABLESPACE 提供了有关数据库中的表空间&#xff08;Tablespace&#xff09;信息。这些信息对于管理数据库存储和优化性能非常关键。表空间是数据库逻辑存储结构的一个层次…

12、stm32通过dht11读取温湿度

一、配置 二、代码 dht11.c /** dht11.c** Created on: Aug 19, 2024* Author: Administrator*/#include "main.h" #include "tim.h" #include "usart.h" #include "gpio.h" /**TIM3定时器实现us级延时*/ void Delay_us(uint16…

Midjourney提示词-动物系列-65

A super cute little anthropomorphic,sheep of the Chinese Zodiac, wearing berets ,in a Hanfu in red style,standing, eyes,cute tail,super realistic,super detail,luxurious,elegant,Unreal Engine,octane render, 8K,VRAY super realistic Pixar Style, Tiny cute…

[matlab]MATLAB实现MLP多层感知机minist手写识别预测

【测试环境】 matlab2023a 【源码文件截图】 【实现部分代码】 mlp_test.m %% MLP 2-layer to test XOR clear; clc;Mode MNIST %Mode XORif (strcmp(Mode,MNIST))% Load the digits into workspace (MNIST Test, from% http://yann.lecun.com/exdb/mnist/)num_train 100…

为什么要构建自己的 AI 代理库

上个月&#xff0c;我开始深入研究 AI 代理的世界。在探索这个领域时&#xff0c;我突然有了灵感&#xff1a;从现在开始我要研究 AI 代理。 最近&#xff0c;我一直在思考第二点。既然有很多可用的选项&#xff0c;为什么还要开发自己的 AI 代理库呢&#xff1f; 经过一番思…

SCI论文系统各阶段状态含义,一文带你全面掌握!告别投稿小白!

知识小站 SCI&#xff08;Science Citation Index&#xff0c;科学引文索引&#xff09;是由美国科学信息研究所&#xff08;Institute for Scientific Information, ISI&#xff09;创建的一个引文数据库。它收录了全球各学科领域中最具影响力的学术期刊&#xff0c;涵盖自然…

PyTorch深度学习模型训练流程的python实现:回归

回归的流程与分类基本一致&#xff0c;只需要把评估指标改动一下就行。回归输出的是损失曲线、R^2曲线、训练集预测值与真实值折线图、测试集预测值散点图与真实值折线图。输出效果如下&#xff1a; 注意&#xff1a;预测值与真实值图像处理为按真实值排序&#xff0c;图中呈现…

OCR识别行驶证(阿里云和百度云)

OCR识别行驶证(阿里云和百度云) 一、使用场景 1、通过识别行驶证&#xff0c;获取相关汽车信息&#xff0c;替代手输 二、效果图 三、代码部分&#xff1a; 1、阿里云OCR 1.1、控制层 PostMapping("/ocrCard") public JSONObject ocrCard(RequestPart("fi…

快速入门:使用Python构建学生成绩管理应用

前言 诸位观众&#xff0c;本学期我有幸学习了Python编程课程。随着课程的结束&#xff0c;授课教师布置了一项任务&#xff0c;要求我们开发一个学生信息管理系统。基于老师的要求&#xff0c;我个人独立完成了这项任务。今天&#xff0c;我希望将这个简易的程序分享给大家&a…

【数字三角形】

题目 代码 #include <bits/stdc.h> using namespace std;const int N 510; int f[N][N]; int a[N][N]; int main() {int n;cin >> n;for(int i 1; i < n; i){for(int j 1; j < i; j){cin >> a[i][j];if(i 1 && j 1) f[i][j] a[i][j];el…

ORCAD Capture CIS 打开原理图总是卡住

原因&#xff1a;ORCAD自动进行了DRC检查。要打开的原理图中footprint未指定footprint路径。 修改&#xff1a;1、第一种方法&#xff1a;指定footprint路径 2、第二种方法&#xff1a;关闭在线DRC检查

钢包智慧管理平台

钢包智慧管理平台基于海康、大华视频监控&#xff0c;实现对钢包的全动态管理&#xff0c;实时检测钢包的温度数据变化&#xff0c;也可以随时查询时间区间内的钢包温度数据变化。 平台基于springboot vue前后台分离技术开发&#xff0c;视频基于zlmedia的转码拉流。实现了视频…

STM32————SPI硬件外设实现读写

首先是理论知识&#xff1a; 常用8位数据帧、高位先行 SPI的时钟由PCLK内部时钟分频得来&#xff0c;最大可到36MHz 精简为半双工就是去掉一根数据线后&#xff0c;用剩下的一根作为发送/接收数据&#xff1b;单工就是去掉接收线&#xff0c;只用发送线进行发送数据&#xf…