python的列表和元组别再傻傻分不清啦


目录

什么是下标:

正数索引:正数索引从左到右,从 0 开始。

负数索引:负数索引从右到左,从 -1 开始。

切片(slice):除了单个元素,Python还支持通过切片访问序列的子集。

索引越界:如果尝试访问一个不存在的索引,Python会抛出 IndexError 异常。

总结一下子吧:

什么是列表:

列表的定义语法:

 列表有哪些特点呢?

 列表的常见操作:

访问列表元素

 修改列表元素

添加元素

删除元素

查找元素

什么是元组: 

元组的特点:​编辑

元组的常见操作:

访问元组元素:

 2. 元组的切片

3. 元组的遍历 

元组与列表有什么区别:

1. 可变性

2. 语法

3. 性能


什么是下标:

在学习之前,我们先了解一下什么是下标:

在Python中,下标索引(也称为索引)用于访问序列类型(如字符串、列表、元组等)中的单个元素。Python的索引从 0 开始,即第一个元素的索引是 0,第二个元素的索引是 1,依此类推。此外,Python还支持负数索引,从序列的末尾开始计数,-1 表示最后一个元素,-2 表示倒数第二个元素,以此类推。

正数索引:正数索引从左到右,从 0 开始。

my_list = [10, 20, 30, 40, 50] # 访问第一个元素 print(my_list[0]) # 输出: 10 # 访问第三个元素 print(my_list[2]) # 输出: 30

负数索引:负数索引从右到左,从 -1 开始。

my_list = [10, 20, 30, 40, 50] # 访问最后一个元素 print(my_list[-1]) # 输出: 50 # 访问倒数第二个元素 print(my_list[-2]) # 输出: 40

切片(slice):除了单个元素,Python还支持通过切片访问序列的子集。

切片的语法是 [start:stop:step]

  • start:起始索引(包含)。
  • stop:结束索引(不包含)。
  • 下标索引从 0 开始。
  • 负数索引从 -1 开始,表示从末尾开始计数。
  • 切片 [start:stop:step] 可以获取子序列。

索引越界会抛出 IndexError


索引是从0开始的,就先我们零基础的小白,从0到1的过程。


什么是列表:

step:步长(可选,默认为1)。

my_list = [10, 20, 30, 40, 50] # 获取索引1到3的元素(不包含索引3) print(my_list[1:3]) # 输出: [20, 30] # 获取从开始到索引3的元素 print(my_list[:3]) # 输出: [10, 20, 30] # 获取从索引2到末尾的元素 print(my_list[2:]) # 输出: [30, 40, 50] # 使用步长2 print(my_list[::2]) # 输出: [10, 30, 50] # 反转列表 print(my_list[::-1]) # 输出: [50, 40, 30, 20, 10]

索引越界:如果尝试访问一个不存在的索引,Python会抛出 IndexError 异常。

my_list = [10, 20, 30] # 尝试访问不存在的索引 print(my_list[3]) # 报错: IndexError: list index out of range

总结一下子吧:

在Python中,**列表(List)**是一种有序的、可变的序列类型,用于存储一组元素。列表用方括号 [] 定义,元素之间用逗号分隔。列表中的元素可以是任意类型(如整数、字符串、布尔值、甚至其他列表等),并且同一个列表中的元素可以是不同类型的。

列表的定义语法:

# 定义一个空列表 empty_list = [] # 定义一个包含整数的列表 numbers = [1, 2, 3, 4, 5] # 定义一个包含不同类型元素的列表 mixed_list = [1, "Hello", 3.14, True] # 定义一个嵌套列表(列表中的元素也是列表) nested_list = [[1, 2], [3, 4], [5, 6]]

 列表有哪些特点呢?

  1. 有序性:列表中的元素是有序的,每个元素都有一个固定的位置(索引),索引从 0 开始。
  2. 可变性:列表是可变的(mutable),可以动态地添加、删除或修改元素。
  3. 元素类型多样性:列表中的元素可以是任意类型,甚至可以是不同类型的混合。
  4. 支持重复元素:列表中可以包含重复的元素。 

示例代码: 

# 定义一个包含字符串的列表 fruits = ["apple", "banana", "cherry"] # 定义一个包含不同类型元素的列表 mixed_list = [42, "Python", 3.14, True] # 定义一个嵌套列表 matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] # 访问列表中的元素 print(fruits[0]) # 输出: apple print(matrix[1][2]) # 输出: 6

 列表的常见操作:

  1. 访问元素:通过索引访问列表中的元素。
  2. 修改元素:通过索引直接修改列表中的元素。
  3. 添加元素:使用 append()insert() 或 extend() 方法。
  4. 删除元素:使用 remove()pop() 或 del 语句。

遍历列表:使用 for 循环遍历列表中的元素。


接下来我们将详细介绍这些操作: 

访问列表元素

列表中的元素可以通过下标索引访问,索引从 0 开始。

 修改列表元素

列表是可变的,可以通过索引直接修改元素。

添加元素

  • append():在列表末尾添加一个元素。
  • insert():在指定位置插入一个元素。
  • remove():删除列表中第一个匹配的元素。
  • pop():删除并返回指定索引的元素(默认删除最后一个元素)。
  • index():返回指定元素的索引。

in 关键字:检查元素是否存在于列表中。

del:通过索引删除元素。

my_list = [10, 20, 30, 40, 50] # 删除值为20的元素 my_list.remove(20) # [10, 30, 40, 50] # 删除并返回最后一个元素 last_element = my_list.pop() # last_element = 50, my_list = [10, 30, 40] # 删除索引1处的元素 del my_list[1] # [10, 40]

查找元素

extend():将另一个列表的所有元素添加到当前列表末尾

my_list = [1, 2, 3] # 添加元素 my_list.append(4) # [1, 2, 3, 4] # 在索引1处插入元素 my_list.insert(1, 99) # [1, 99, 2, 3, 4] # 扩展列表 my_list.extend([5, 6]) # [1, 99, 2, 3, 4, 5, 6]

删除元素

什么是元组: 

在Python中,**元组(Tuple)**是一种有序的、不可变的序列类型,用于存储一组元素。元组用圆括号 () 定义,元素之间用逗号分隔。元组与列表类似,但元组是不可变的(immutable),这意味着一旦创建,就不能修改元组中的元素。

元组的定义语法:

# 定义一个空元组 empty_tuple = () # 定义一个包含整数的元组 numbers = (1, 2, 3, 4, 5) # 定义一个包含不同类型元素的元组 mixed_tuple = (1, "Hello", 3.14, True) # 定义一个嵌套元组(元组中的元素也是元组) nested_tuple = ((1, 2), (3, 4), (5, 6))

元组的特点:

元组的常见操作:

访问元组元素:

元组中的元素可以通过下标索引访问,索引从 0 开始

 2. 元组的切片

元组支持切片操作,可以获取子元组。

3. 元组的遍历 

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

元组与列表有什么区别:

1. 可变性

  • 列表(List):是可变的(mutable),可以动态地添加、删除或修改元素。
  • 元组(Tuple):是不可变的(immutable),一旦创建,就不能修改元组中的元素。

示例:

# 列表是可变的 my_list = [1, 2, 3] my_list[1] = 99 # 修改元素 my_list.append(4) # 添加元素 print(my_list) # 输出: [1, 99, 3, 4] # 元组是不可变的 my_tuple = (1, 2, 3) my_tuple[1] = 99 # 报错: TypeError: 'tuple' object does not support item assignment 

 

2. 语法

  • 列表:用方括号 [] 定义。
  • 元组:用圆括号 () 定义。
# 列表 my_list = [1, 2, 3] # 元组 my_tuple = (1, 2, 3)

3. 性能

  • 列表:由于列表是可变的,它的存储和操作(如添加、删除元素)会占用更多的内存和计算资源。

元组:由于元组是不可变的,它的存储和访问速度比列表更快,适合存储不需要修改的数据。

浅浅总结一下吧: 


Read more

Flutter 三方库 adb_dart 的鸿蒙化适配指南 - 实现纯 Dart 的 ADB 协议通信、远程控制手机与自动化调试脚本开发

Flutter 三方库 adb_dart 的鸿蒙化适配指南 - 实现纯 Dart 的 ADB 协议通信、远程控制手机与自动化调试脚本开发

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 adb_dart 的鸿蒙化适配指南 - 实现纯 Dart 的 ADB 协议通信、远程控制手机与自动化调试脚本开发 前言 在 Flutter for OpenHarmony 的开发辅助工具中,有时我们需要直接从应用内部与 Android 设备(作为分布式设备的一部分)进行调试交互,或者构建一个纯 Dart 的桌面端调试器。adb_dart 是一个实现了完整 ADB(Android Debug Bridge)通信协议的 Dart 库。它允许你在不依赖外部 adb 二进制文件的情况下,直接通过 Socket 发送指令。本文将讲解如何在鸿蒙端利用该库构建跨平台的调试方案。 一、原理解析

By Ne0inhk
【基于SSH加密安全连接到远程openclaw网关的方法】一个不需要HTTPS的安全连接方案

【基于SSH加密安全连接到远程openclaw网关的方法】一个不需要HTTPS的安全连接方案

原文:【windows电脑浏览器直接访问虚拟机或云端openclaw的方法】一个不需要HTTPS的安全连接通道(基于SSH),安全开启openclaw工作环境 说明:开启安全的沙箱openclaw,资源占用较小,访问交互快捷舒适,网络安全加密。 痛点: 远程开启了openclaw,想暴露openclaw网关到公网又怕不安全。 不想折腾Mac,不想折腾手机,不想折腾QQ,飞书,微信等通讯方式。 打算部署一个openclaw的沙盒环境,于是想到了 VMWare这个老牌工具。起初以为在vmware中可以有GUI界面,可以方便地用Firefox浏览器实现对话。可是,实际体验后,发现直接在VMWare中跑的时候用firefox会就让系统变得有点卡顿(运行内存8G),而且ubuntu输入法也很不习惯,那么,有没有一种方法,可以在windows11(宿主)中打开浏览器直接访问openclaw对话网页呢? 理论上存在两种方法: 1:把openclaw的Gateway的监听IP设置为0.0.0.0(或局域网IP),这样通过<IP>:18789可以访问openclaw的webUI; 2:用

By Ne0inhk

Flutter 三方库 lint_staged 的鸿蒙化适配指南 - 在鸿蒙系统上构建严谨、自动化的代码提交风控体系

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 lint_staged 的鸿蒙化适配指南 - 在鸿蒙系统上构建严谨、自动化的代码提交风控体系 在鸿蒙(OpenHarmony)的大型研发团队中,代码质量的“守门员”任务至关重要。如果我们能在 Git 提交的瞬间自动执行静态扫描与格式化,就能极大减少后期 Code Review 的修边角成本。lint_staged 为鸿蒙开发者提供了一套完美集成的 Git Hook 工具。本文将实战演示如何在其背后构建鸿蒙代码提交的质量闭环。 前言 什么是 Lint Staged?它只对 Git 暂存区(Staged)的文件运行检查。在鸿蒙项目涉及成千上万个文件时,如果全量运行脚本将极其缓慢。lint_staged 通过精准的文件过滤,让鸿蒙开发者能在提交代码的几秒钟内完成格式校准和语法扫描,确保每一行入库的代码都符合鸿蒙架构的设计规范。 一、

By Ne0inhk
[特殊字符]颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发论文检索MCP Server!

[特殊字符]颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发论文检索MCP Server!

🔥🔥🔥本篇笔记所对应的视频:🚀颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发MCP服务_哔哩哔哩_bilibili Open WebUI 的 MCPo 项目:将 MCP 工具无缝集成到 OpenAPI 的创新解决方案 随着人工智能工具和模型的快速发展,如何高效、安全地将这些工具集成到标准化的 API 接口中成为了开发者面临的重要挑战。Open WebUI 的 MCPo 项目(Model Context Protocol-to-OpenAPI Proxy Server)正是为了解决这一问题而设计的。本文将带您深入了解 MCPo 的功能、优势及其对开发者生态的影响。 什么是 MCPo? MCPo 是一个简单、可靠的代理服务器,能够将任何基于 MCP 协议的工具转换为兼容

By Ne0inhk