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

python基础语法(三-中)

基础语法3:

2.列表与元组:

<1>.列表、元组是什么?

都用来存储数据,但是两者有区别,列表可变,元组不可变。

<2>.创建列表:

创建列表有两种方式:

[1].a = 【】;

[2].b = list();

<3>.下标访问:

a[1]......

a[-1] = a[len(a) - 1] = 最后一个数;

<4>.切片操作:

通过切片,可以一次取出一组连续元素,得到一个子列表

使用[:]进行切片

alist = [1,2,3,4]
print(alist[1:3])

除了这种切片方式,还可以有:
[1].alist[1: ],省略后边界,获取到末尾。

[2].alist[ :-1],省略前边界,从头开始获取。

[3].alist[ : ],两个边界均省略,获取整个列表。

<5>.遍历列表元素:

用for循环:
alist = [1,2,3,4]
for elem in alist:print(elem)
用for生成下标:
alist = [1,2,3,4]
for i in range (0,len(alist)):print(alist[i])
用while循环:
alist = [1,2,3,4]
i = 0
while i < len(alist):print(alist[i])i+=1

<6>.插入元素:

使用append:
a = [1, 2, 3, 4]
a.append(5)
a.append('hello')
i = 0  # 初始化变量 i
while i < len(a):print(a[i])i += 1
使用insert:
a = [1, 2, 3, 4]
a.insert(4, 5)      # 在索引 4 的位置插入元素 5(即列表末尾)
a.insert(0, 'start') # 在列表开头插入字符串 'start'
a.insert(len(a), 'end') # 在列表末尾插入字符串 'end'i = 0
while i < len(a):print(a[i])i += 1

<7>.查找元素:

in 操作符:检查元素是否存在
  • 作用: 判断元素是否存在于列表中,返回布尔值 True 或 False
  • 语法: element in list
  • 示例:
a = [1, 2, 3, 'hello']print(2 in a)       # 输出: True
print('world' in a) # 输出: False
index() 方法:查找元素的索引
  • 作用: 返回元素在列表中第一次出现的索引位置。
  • 语法: list.index(element, start, end)
    • element:要查找的元素
    • start(可选):开始查找的索引位置
    • end(可选):结束查找的索引位置
  • 示例:
a = [1, 2, 3, 'hello', 3]print(a.index(3))       # 输出: 2(第一个 3 的索引)
print(a.index('hello')) # 输出: 3
 结合使用示例

下面是一个结合 in 和 index() 的示例,用于安全地查找元素并处理可能的错误:

a = [1, 2, 3, 'hello']# 先检查元素是否存在,避免 IndexError
element = 'hello'
if element in a:index = a.index(element)print(f"元素 '{element}' 的索引是: {index}")
else:print(f"元素 '{element}' 不存在于列表中")# 查找不存在的元素
element = 'world'
if element in a:print(a.index(element))
else:print(f"'{element}' 不存在")

<8>.删除元素:

在 Python 中,列表提供了多种删除元素的方法,最常用的是 pop() 和 remove(),下面详细介绍它们的用法和区别。

pop() 方法:根据索引删除元素
  • 作用: 删除列表中指定索引的元素,并返回该元素的值。
  • 语法: list.pop(index)
    • index(可选):要删除元素的索引,默认为 -1(删除最后一个元素)。
  • 示例:
a = [10, 20, 30, 40]# 删除并返回索引为 1 的元素(第二个元素)
removed = a.pop(1)
print(removed)  # 输出: 20
print(a)        # 输出: [10, 30, 40]# 删除并返回最后一个元素
last = a.pop()
print(last)     # 输出: 40
print(a)        # 输出: [10, 30]
  • 注意: 如果索引超出范围,会抛出 IndexError
remove() 方法:根据值删除元素
  • 作用: 删除列表中第一个匹配的元素(按值查找),无返回值。
  • 语法: list.remove(value)
    • value:要删除的元素值。
  • 示例:
a = [10, 20, 30, 20]# 删除第一个值为 20 的元素
a.remove(20)
print(a)  # 输出: [10, 30, 20]# 尝试删除不存在的值
a.remove(50)  # 会抛出 ValueError: list.remove(x): x not in list
  • 注意: 如果元素不存在,会抛出 ValueError
区别总结
方法删除依据返回值异常处理适用场景
pop()索引被删除的元素索引越界时抛出 IndexError删除指定位置的元素,需获取删除值
remove()无(返回 None值不存在时抛出 ValueError删除指定值的元素,不关心位置
其他删除方式
(1)del 语句:按索引或切片删除
a = [1, 2, 3, 4, 5]# 删除单个元素
del a[2]        # 删除索引为 2 的元素(第三个元素)
print(a)        # 输出: [1, 2, 4, 5]# 删除切片
del a[1:3]      # 删除索引 1 到 2 的元素
print(a)        # 输出: [1, 5]
(2)清空列表:clear()
a = [1, 2, 3]
a.clear()       # 等同于 a = []
print(a)        # 输出: []

<9>.列表的拼接:

在 Python 中,列表的拼接有两种主要方式:使用 + 运算符和 extend() 方法。它们的功能相似,但在实现方式和性能上有一些区别。

+ 运算符:创建新列表
  • 作用: 将两个列表合并为一个新列表,原列表不变。
  • 语法: new_list = list1 + list2
  • 示例:
a = [1, 2, 3]
b = [4, 5, 6]# 使用 + 拼接列表
c = a + b
print(c)  # 输出: [1, 2, 3, 4, 5, 6]# 原列表不变
print(a)  # 输出: [1, 2, 3]
print(b)  # 输出: [4, 5, 6]
  • 注意: 只能用于列表类型,否则会抛出 TypeError
extend() 方法:原地扩展列表
  • 作用: 将另一个可迭代对象(如列表、元组、字符串)的元素添加到原列表末尾,原列表被修改。
  • 语法: list1.extend(iterable)
  • 示例:
a = [1, 2, 3]
b = [4, 5, 6]# 使用 extend() 扩展列表
a.extend(b)
print(a)  # 输出: [1, 2, 3, 4, 5, 6]# 原列表 a 被修改,b 不变
print(b)  # 输出: [4, 5, 6]# 扩展其他可迭代对象
a.extend((7, 8))    # 扩展元组
a.extend("hello")   # 扩展字符串
print(a)  # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 'h', 'e', 'l', 'l', 'o']
区别总结
方法操作类型原列表是否修改性能(大量元素)适用场景
+创建新列表较慢(复制内存)需要保留原列表,创建临时结果
extend()原地修改列表较快(直接追加)不需要保留原列表,性能敏感
其他拼接方式
(1)+= 运算符:等价于 extend()
a = [1, 2]
b = [3, 4]a += b  # 等同于 a.extend(b)
print(a)  # 输出: [1, 2, 3, 4]
(2)列表乘法:复制列表元素
a = [1, 2]
b = a * 3  # 复制 3 次
print(b)  # 输出: [1, 2, 1, 2, 1, 2]

 <10>.关于元组:

在 Python 中,元组(tuple) 是一种不可变的序列类型,用于存储多个元素。它与列表(list)类似,但元组一旦创建就不能修改,这使得元组在需要保证数据不被意外更改的场景中非常有用。

元组的基本特点
  • 不可变(Immutable):创建后不能添加、删除或修改元素。
  • 有序:元素按插入顺序排列,可以通过索引访问。
  • 允许重复元素:元组中可以包含重复的值。
  • 异构:可以包含不同类型的元素(如整数、字符串、列表等)。
元组的创建
(1)使用小括号 ()
empty_tuple = ()  # 空元组
single_tuple = (1,)  # 单元素元组(注意逗号!)
multiple_tuple = (1, "apple", [2, 3])  # 多元素元组
(2)省略括号(逗号分隔)
implicit_tuple = 1, 2, 3  # 等价于 (1, 2, 3)
(3)使用内置函数 tuple()
from_list = tuple([1, 2, 3])  # 从列表转换
from_str = tuple("hello")     # 从字符串转换
元组的基本操作
(1)访问元素
t = (10, 20, 30, 40)
print(t[0])    # 输出: 10(索引从 0 开始)
print(t[-1])   # 输出: 40(负索引表示从后往前)
print(t[1:3])  # 输出: (20, 30)(切片操作)
(2)遍历元组
for element in (1, "a", True):print(element)
(3)拼接和重复
t1 = (1, 2)
t2 = (3, 4)
print(t1 + t2)  # 输出: (1, 2, 3, 4)(拼接)
print(t1 * 3)   # 输出: (1, 2, 1, 2, 1, 2)(重复)
(4)检查元素是否存在
t = (1, 2, 3)
print(2 in t)  # 输出: True
元组的不可变性
t = (1, 2, 3)
t[0] = 10  # 报错: TypeError: 'tuple' object does not support item assignment

但如果元组中的元素是可变对象(如列表),则可以修改该元素的内部状态:

t = (1, [2, 3])
t[1].append(4)  # 允许修改列表内部
print(t)  # 输出: (1, [2, 3, 4])
元组的常用方法
(1)count():统计元素出现次数
t = (1, 2, 2, 3)
print(t.count(2))  # 输出: 2
(2)index():查找元素的索引
t = (10, 20, 30)
print(t.index(20))  # 输出: 1
元组与列表的对比
特性元组(tuple)列表(list)
可变性不可变(Immutable)可变(Mutable)
语法用 () 创建,逗号分隔用 [] 创建,逗号分隔
性能略高(创建和访问更快)略低(动态调整大小)
应用场景存储固定数据、函数返回值动态数据、需要修改元素

相关文章:

python基础语法(三-中)

基础语法3&#xff1a; 2.列表与元组&#xff1a; <1>.列表、元组是什么&#xff1f; 都用来存储数据&#xff0c;但是两者有区别&#xff0c;列表可变&#xff0c;元组不可变。 <2>.创建列表&#xff1a; 创建列表有两种方式&#xff1a; [1].a 【】&#x…...

【gitee 初学者矿建仓库】

简易的命令行入门教程: Git 全局设置: git config --global user.name "你的名字"触摸 git config --global user.email "你的邮箱"创建 git 仓库: mkdir codestore cd codestore git init -b "main" touch README.md # 选择运行 git add REA…...

思路收集文档

降低工作量思路 nodejsjava混合网站开发...

OpenCV 光流估计:从原理到实战

在计算机视觉领域&#xff0c;光流估计&#xff08;Optical Flow Estimation&#xff09;是一项至关重要的技术&#xff0c;它能够通过分析视频序列中图像像素的运动信息&#xff0c;捕捉物体和相机的运动情况。OpenCV 作为强大的计算机视觉库&#xff0c;为我们提供了高效实现…...

使用HtmlAgilityPack采集墨迹天气中的天气数据

需要解析对应的HTML源码&#xff1a; <div class"left"><div class"wea_alert clearfix"><ul><li><a href "https://tianqi.moji.com/aqi/china/jiangxi/hukou-county" >< span class"level level_2&qu…...

ZTE 7551N 中兴小鲜60 远航60 努比亚小牛 解锁BL 刷机包 刷root 展讯 T760 bl

ZTE 7551N 中兴小鲜60 远航60 努比亚小牛 解锁BL 刷机包 刷root 3款机型是一个型号&#xff0c;包通用&#xff0c; ro.product.system.modelZTE 7551N ro.product.system.nameCN_P720S15 #################################### # from generate-common-build-props # Th…...

SearxNG本地搜索引擎

SearxNG 是一个强大、开源的 元搜索引擎(meta search engine),它不会存储用户信息,注重隐私保护,并支持从多个搜索引擎聚合结果,用户可以自建部署,打造一个无广告、可定制的搜索平台。 🔍 什么是 SearxNG? SearxNG 是 Searx 的一个积极维护的分支(fork),意在改进…...

MyBatis 核心组件源码分析

MyBatis 作为 Java 领域最受欢迎的持久层框架之一,以灵活的 SQL 映射和强大的扩展性著称。要真正驾驭 MyBatis,深入理解其核心组件的源码实现是关键。本文将通过源码分析,结合图文并茂的方式,带大家揭开 MyBatis 核心组件的神秘面纱。 1.SqlSessionFactory:会话工厂的核心…...

信息系统项目管理师高级-软考高项案例分析备考指南(2023年案例分析)

个人笔记整理---仅供参考 计算题 案例分析里的计算题就是进度、挣值分析、预测技术。主要考査的知识点有:找关键路径、求总工期、自由时差、总时差、进度压缩资源平滑、挣值计算、预测计算。计算题是一定要拿下的&#xff0c;做计算题要保持头脑清晰&#xff0c;认真读题把PV、…...

stack和queue简单模拟实现

stackreverse_iteratorqueuepriority_queue仿函数具体代码 stack Stacks are a type of container adaptor, specifically designed to operate in a LIFO context (last-in first-out), where elements are inserted and extracted only from one end of the container. 上述描…...

如何安装双系统?即windows已经安装,如何安装ubuntu 22.04LTS

在已安装 Windows 的电脑上安装 Ubuntu 22.04 LTS 双系统&#xff0c;需通过 分区调整、UEFI/BIOS 设置 和 引导管理 实现。以下是详细步骤&#xff1a; 一、准备工作 备份数据 • 备份 Windows 中的重要文件&#xff08;防止分区操作失误导致数据丢失&#xff09;。 下载 Ubu…...

产品经理入门(2)产品体验报告

产品体验报告大纲&#xff1a;重点在产品体验——优点。 1.产品概括 可以从各大平台搜产品介绍。 2.市场分析 按照产品方向分析各个指标——包括有效使用时间,市场规模等。 3. 用户分析——对用户通过各项指标画像。 4.产品体验——对各项功能与设计的体验。 5.报告总结...

C43-指针与数组

一 定义一个指针变量指向数组 1.途径一:指向数组首元素的地址 代码示例: #include <stdio.h> int main() {int arr[3]{2,4,5};int *p;p&arr[0];printf("该数组的首元素是:%d",*p);return 0; }成果展示: 报错与总结: 给指针变量赋值时,未在数组首元素前输…...

UDP--DDR--SFP,FPGA实现之ddr读写控制模块

DDR读写控制模块实现介绍 由于该模块接口数量较多&#xff0c;为了详细说明模块实现&#xff0c;采用文字流程进行介绍 上级模块传输数据到来捕捉数据有效上升沿传输写指令&#xff0c;写有效&#xff0c;写指令成功被下一级模块缓存&#xff0c;进行写地址一次读写长度&…...

云计算与大数据进阶 | 26、解锁云架构核心:深度解析可扩展数据库的5大策略与挑战(上)

在云应用/服务的 5 层架构里&#xff0c;数据库服务层稳坐第 4 把交椅&#xff0c;堪称其中的 “硬核担当”。它的复杂程度常常让人望而生畏&#xff0c;不少人都将它视为整个架构中的 “终极挑战”。 不过&#xff0c;也有人觉得可扩展存储系统才是最难啃的 “硬骨头”&#…...

AI Agent | Coze 插件使用指南:从功能解析到实操步骤

一、前言 在人工智能技术飞速发展的今天&#xff0c;低代码开发模式正成为构建智能应用的主流趋势。对于希望快速搭建 AI Bot 的开发者和业务人员而言&#xff0c;coze作为一款强大的低代码 AI 开发平台&#xff0c;凭借其高度模块化的插件体系脱颖而出。这些插件就像搭建智能…...

06、基础入门-SpringBoot-依赖管理特性

06、基础入门-SpringBoot-依赖管理特性 Spring Boot 的依赖管理特性是其核心优势之一&#xff0c;极大地简化了项目的构建和维护过程。以下是其主要特点&#xff1a; ## 1. 父项目依赖管理 ### 1.1 继承 spring-boot-starter-parent 在 pom.xml 文件中&#xff0c;通过继承 spr…...

MK米客方德SD NAND:无人机存储的高效解决方案

在无人机技术迅猛发展的当下&#xff0c;飞控系统的数据记录对于飞行性能剖析、故障排查以及飞行安全保障极为关键。以往&#xff0c;SD 卡是飞控 LOG 记录常见的存储介质&#xff0c;但随着技术的革新&#xff0c;新的存储方案不断涌现。本文聚焦于以 ESP32 芯片为主控制器的无…...

【vscode】解决vscode无法安装远程服务器插件问题,显示正在安装

文章目录 现状分析采用VSIX离线安装第一步&#xff1a;离线下载插件包第二步&#xff1a;把下载好的插件文件上传到远程服务器上第三步&#xff1a;在windows下打开vscode&#xff0c;并链接远端&#xff0c;进行安装 现状分析 vscode无法远程安装扩展插件&#xff0c;显示正在…...

1688 数据接口调用秘籍:高效获取商品实时信息的开发指南

在电商行业竞争白热化的当下&#xff0c;企业想要抢占市场先机&#xff0c;实时掌握商品信息至关重要。作为国内 B2B 电商巨头&#xff0c;1688 平台汇聚海量商品资源&#xff0c;通过高效调用其数据接口获取商品实时信息&#xff0c;能为企业价格策略制定、库存管理、竞品分析…...

【Spring】Spring的请求处理

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 目录 引言HTTP/HTTPS协议Spring Web与Spring Web MVCSpring WebFlux 自定义的TPC/IP协议FTP、S…...

粒子群算法(PSO算法)

粒子群算法概述 1.粒子群优化算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;。粒子群优化算法是在1995年由Kennedy博士和Eberhart博士一起提出的&#xff0c;它源于对鸟群捕食行为的研究。 2.基本核心是利用群体中的个体对信息的共享从而使得整…...

git提交库常用词

新功能 feat修改BUG fix文档修改 docs格式修改 style重构 refactor性能提升 perf测试 test构建系统 build对CI配置文件修改 ci修改构建流程、或增加依赖库、工具 chore回滚版本 revert...

LLM智能体新纪元:深入解析MCP与A2A协议,赋能智能自动化协作

LLM智能体&#xff08;LLM agents&#xff09;是能够自主行动以实现特定目标的AI系统。在实际应用中&#xff0c;智能体能够将用户请求拆解为多个步骤&#xff0c;利用知识库或API获取数据&#xff0c;最终整合出答案。这让智能体相比于传统独立聊天机器人拥有更强大的能力——…...

SAP学习笔记 - 开发豆知识01 - CDS SDK命令出乱码 (cds init CAP-Test03 --add java)

1&#xff0c;现象 安装完VSCode以及各种需要的插件&#xff08;比如SAP CDS Language Support&#xff09;&#xff0c;就可以做CAP开发。 用这个命令创建Project&#xff1a;cds init CAP-Test03 --add java 然后出来一个乱码错误 adding java The derived package name c…...

(C语言)超市管理系统 (正式版)(指针)(数据结构)(清屏操作)(文件读写)(网页版预告)(html)(js)(json)

目录 前言&#xff1a; 源代码&#xff1a; product.h product.c fileio.h fileio.c main.c json_export.h json_export.c tasks.json idex.html script.js 相关步骤&#xff1a; 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; 第五步…...

进阶-数据结构部分:​​​​​​​2、常用排序算法

飞书文档https://x509p6c8to.feishu.cn/wiki/FfpIwIPtviMMb4kAn3Sc40ABnUh 常用排序算法 这几种算法都是常见的排序算法&#xff0c;它们的优劣和适用场景如下&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;简单易懂&#xff0c;时间复杂度较高&…...

解决 Three.js Raycaster 点击位置与实际交点偏差问题

当使用 Three.js 的 Raycaster 时&#xff0c;如果发现点击位置与显示的碰撞点之间存在较大偏差&#xff0c;这通常是由于坐标系统不匹配或参数设置不正确导致的。以下是系统性的排查和解决方案&#xff1a; 1. 检查鼠标坐标转换 最常见的偏差原因是鼠标坐标到标准化设备坐标…...

25、DeepSeek-R1论文笔记

DeepSeek-R1论文笔记 1、研究背景与核心目标2、核心模型与技术路线3、蒸馏技术与小模型优化4、训练过程简介5、COT思维链&#xff08;Chain of Thought&#xff09;6、强化学习算法&#xff08;GRPO&#xff09;7、冷启动**1. 冷启动的目的****2. 冷启动的实现步骤****3. 冷启动…...

LeetCode --- 156双周赛

题目列表 3541. 找到频率最高的元音和辅音 3542. 将所有元素变为 0 的最少操作次数 3543. K 条边路径的最大边权和 3544. 子树反转和 一、找到频率最高的元音和辅音 分别统计元音和辅音的出现次数最大值&#xff0c;然后相加即可&#xff0c;代码如下 // C class Solution {…...