python之List记录

1. 列表(List)基础

Python中的列表是一种可变、有序的元素集合,元素之间通过逗号分隔并包含在一对方括号内。列表的元素可以是不同类型的数据。

创建列表

# 创建一个包含不同类型元素的列表
my_list = [1, 2.5, 'hello', True, [1, 2, 3]]

访问列表元素

使用索引来访问列表中的元素,索引从0开始。

# 访问第一个元素
print(my_list[0])  # 输出: 1# 访问第三个元素(注意索引是从0开始的)
print(my_list[2])  # 输出: 'hello'

修改列表元素

直接通过索引来修改列表中的元素。

# 修改第一个元素为10
my_list[0] = 10
print(my_list)  # 输出: [10, 2.5, 'hello', True, [1, 2, 3]]

2. 列表操作

添加元素

  • 使用append()方法向列表末尾添加元素。
  • 使用insert()方法在指定索引处插入元素。
my_list.append(4)
print(my_list)  # 输出: [10, 2.5, 'hello', True, [1, 2, 3], 4]my_list.insert(1, 'world')
print(my_list)  # 输出: [10, 'world', 2.5, 'hello', True, [1, 2, 3], 4]

删除元素

  • 使用remove()方法根据值删除元素。
  • 使用pop()方法根据索引删除元素,并返回该元素的值。
  • 使用del语句删除指定索引或切片范围内的元素。
my_list.remove('hello')
print(my_list)  # 输出: [10, 'world', 2.5, True, [1, 2, 3], 4]element = my_list.pop(1)
print(element)  # 输出: 'world'
print(my_list)  # 输出: [10, 2.5, True, [1, 2, 3], 4]del my_list[0]
print(my_list)  # 输出: [2.5, True, [1, 2, 3], 4]

扩展列表

使用extend()方法将一个列表的所有元素添加到另一个列表的末尾。

another_list = [5, 6, 7]
my_list.extend(another_list)
print(my_list)  # 输出: [2.5, True, [1, 2, 3], 4, 5, 6, 7]

3. 列表切片

列表切片允许我们访问列表中的一部分元素。

# 访问索引1到3(不包括3)的元素
print(my_list[1:4])  # 输出: [True, [1, 2, 3], 4]# 访问从索引1开始到末尾的元素
print(my_list[1:])  # 输出: [True, [1, 2, 3], 4, 5, 6, 7]# 访问从开头到索引3(不包括3)的元素,步长为2
print(my_list[::2])  # 输出: [2.5, [1, 2, 3], 6]

4. 列表推导式(List Comprehension)

列表推导式是一种简洁的创建列表的语法。

# 创建一个包含0到9的平方的列表
squares = [x**2 for x in range(10)]
print(squares)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]# 创建一个包含所有偶数平方的列表
even_squares = [x**2 for x in range(10) if x % 2

基于上述场景和描述,我们可以继续深入讲解Python列表的高级特性和用法,包括列表推导式中的条件语句、嵌套列表推导式,以及列表与其他数据结构的交互。

5. 列表推导式中的条件语句

在列表推导式中,我们可以使用条件语句(if/else)来过滤或转换元素。

# 创建一个包含0到9之间偶数的平方的列表
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)  # 输出: [0, 4, 16, 36, 64]# 创建一个列表,如果元素是偶数则平方,否则取负值
numbers = [1, 2, 3, 4, 5, 6]
result = [x**2 if x % 2 == 0 else -x for x in numbers]
print(result)  # 输出: [-1, 4, -3, 16, -5, 36]

6. 嵌套列表推导式

当处理包含列表的列表(即嵌套列表)时,我们可以使用嵌套列表推导式来创建新的嵌套列表结构。

# 假设我们有一个嵌套列表,每个子列表包含三个数字
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]# 使用嵌套列表推导式来创建一个新的列表,其中每个元素是原列表中对应子列表的和
flattened_sums = [sum(sublist) for sublist in nested_list]
print(flattened_sums)  # 输出: [6, 15, 24]# 使用嵌套列表推导式来创建一个新的嵌套列表,其中每个子列表包含原列表中对应子列表的平方
squared_nested_list = [[x**2 for x in sublist] for sublist in nested_list]
print(squared_nested_list)  # 输出: [[1, 4, 9], [16, 25, 36], [49, 64, 81]]

7. 列表与其他数据结构的交互

列表可以与Python中的其他数据结构(如元组、集合、字典)进行交互。

列表与元组

列表和元组非常相似,但元组是不可变的。我们可以将列表转换为元组,但不能直接将元组转换为列表(因为元组是不可变的)。

my_list = [1, 2, 3]
my_tuple = tuple(my_list)  # 将列表转换为元组
print(my_tuple)  # 输出: (1, 2, 3)# 注意:不能直接将元组转换为列表(因为元组是不可变的),但可以通过切片或列表推导式来“复制”元组
my_list_from_tuple = list(my_tuple)  # 通过list()函数将元组“复制”为列表
print(my_list_from_tuple)  # 输出: [1, 2, 3]
列表与集合

集合是一个无序且不包含重复元素的集合。我们可以使用集合来去除列表中的重复元素。

my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list)  # 将列表转换为集合,自动去除重复元素
print(my_set)  # 输出: {1, 2, 3, 4, 5}# 如果需要保持顺序并去除重复元素,可以使用列表推导式和in关键字
unique_list = []
[unique_list.append(x) for x in my_list if x not in unique_list]
# 注意:上面的代码实际上并不高效,因为它在每次迭代时都检查整个unique_list。更好的方法是使用集合来辅助去重。# 更高效的方法
unique_list = list(dict.fromkeys(my_list))
print(unique_list)  # 输出: [1, 2, 3, 4, 5],但顺序可能与原列表不同
列表与字典

字典是一个无序的键值对集合。我们可以使用列表推导式和字典推导式来创建字典或处理与字典相关的列表。

# 假设我们有一个包含键和值的列表对
keys = ['a', 'b', 'c']
values = [1, 2, 3]# 使用zip()函数和字典推导式来创建一个字典
my_dict = {k: v for k, v in zip(keys, values)}
print(my_dict)  # 输出: {'a': 1, 'b': 2, 'c': 3}# 假设我们有一个字典,并且我们想要获取字典中所有的键或值
my_dict = {'a': 1, 'b': 2, 'c': 3}
keys_list = list(my_dict.keys())
values_list = list(my_dict.values())
print(keys_list)  # 输出: ['a', 'b', 'c']
print(values_list)  # 输出: [1, 2, 3]# 我们还可以使用列表推导式来处理字典的值(例如,计算所有值的平方)
squared_values = [value ** 2 for value in my_dict.values()]
print(squared_values)  # 输出: [1, 4, 9]# 或者,我们可以使用字典推导式来创建一个新的字典,其中键保持不变,但值被修改了(例如,乘以2)
doubled_dict = {k: v * 2 for k, v in my_dict.items()}
print(doubled_dict)  # 输出: {'a': 2, 'b': 4, 'c': 6}### 8. 列表排序Python提供了多种对列表进行排序的方法。#### 使用`sort()`方法`sort()`方法会就地(in-place)对列表进行排序,即不返回新列表,而是修改原始列表。```python
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
my_list.sort()
print(my_list)  # 输出: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
使用sorted()函数

sorted()函数会返回一个新的已排序列表,原始列表保持不变。

my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = sorted(my_list)
print(sorted_list)  # 输出: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
print(my_list)  # 输出: 原始列表保持不变,即[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
自定义排序

我们还可以为sort()sorted()提供key参数,以便根据自定义规则进行排序。

# 根据字符串长度对字符串列表进行排序
words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=len)
print(words)  # 输出: ['date', 'apple', 'cherry', 'banana']

9. 列表的常用内置函数和方法

Python提供了许多内置函数和方法来处理列表,如len()max()min()index()count()等。

  • len(list):返回列表的长度。
  • max(list)min(list):返回列表中的最大值和最小值。
  • list.index(value):返回指定值在列表中的第一个索引,如果值不存在则抛出ValueError
  • list.count(value):返回指定值在列表中出现的次数。

这些只是Python列表的一部分高级特性和用法。随着对Python的深入学习,您会发现更多有关列表的有趣和有用的内容。

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

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

相关文章

[数据集][图像分类]城市异常情况路边倒树火灾水灾交通事故分类数据集15223张8类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):15223 分类类别数:8 类别名称:[“badroad”,“fallentree”,“f…

Android-Q升级-Camera记录

目录 代码环境 建立Android Q使用的camera仓 Camera底层适配 camx 原生接口变化 其他编译问题 chi-cdk 数据类型不匹配 case未加break的报错 libalRnBRT_GL_GBWRAPPER链接问题 vidhance编译错误 libarcsat链接问题 vendor/qcom/proprietary prebuilt_HY11 调试cam…

floor函数

添加链接描述\ #include<bits/stdc.h>using namespace std;const int N 10;int main() {int n;cin>>n;for(int i1;i<50000;i){if(floor(i*1.08)n){cout<<i;return 0;}}cout<<":(";return 0; }floor函数是向下取整 ceil是向上取整 round…

CarSim车辆运动轨迹绘制

CarSim车辆运动轨迹绘制 CarSim中与车辆位置有关的信息分别为Xo和Yo 输出到Simulink中 导入到工作空间中保存&#xff0c;low_carsim_path.mat &#xff0c;绘制结果曲线&#xff0c;low_carsim_path_comp.m data csvread(low_two_path.csv,1,0); low_two_path_x data(:,1)…

【CentOS】手动编译安装make、cmake、gcc、git

摘要 Centos7升级make和gcc版本到最新——CSDN make make 各个版本下载地址 http://ftp.gnu.org/pub/gnu/make 以4.4为例安装&#xff1a; # 下载 wget https://ftp.gnu.org/pub/gnu/make/make-4.4.tar.gz # 解压配置 tar zxf make-4.4.tar.gz cd make-4.4 ./configure --p…

分享我的新版FMEA培训心得

近日&#xff0c;我有幸参加了深圳天行健企业管理咨询公司举办的新版FMEA培训&#xff0c;这次学习不仅让我对FMEA有了更深入的理解&#xff0c;更使我在实际工作中找到了提升产品质量的新路径。 新版FMEA相较于传统版本&#xff0c;更加注重风险识别与预防&#xff0c;强调在…

Java 开发面试题精选:分布式锁相关一篇全搞定

面试路上&#xff0c;分布式锁始终是绕不开的坎&#xff1f;别怕&#xff0c;这篇精心准备的文章正是您的通关秘籍&#xff01;这篇文章聚焦面试官最青睐的提问点&#xff1a;从分布式锁基础概念到其实现机理&#xff0c;再到它在多场景下的应用智慧&#xff1b;深入剖析性能优…

C# FFmpeg 音视频开发总结

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

golang通道(chan)选择(select)与关闭(close)使用示例

1.通道选择 创建两个双向通道 c1 : make(chan string) //双向通道 c2 : make(chan string) //双向通道 向通道写入数据 //协程1向通道1写数据go func() { c1 <- "hello world from c1" }()//协程2向通道2写数据go func() { c2 <- "hello world from …

【递归、搜索与回溯】递归算法

一、经验总结 递归 VS 迭代&#xff08;循环&#xff09; 递归和迭代都解决的是重复的子问题&#xff0c;因此两者是可以相互转化的。利用栈结构可以将递归算法转化为迭代算法。 递归和迭代各有其优缺点&#xff0c;选择时需根据具体场景和需求来决定。 递归的优点包括&#…

苹果眼镜(Vision Pro)专业咨询服务模式优化方案

一、精准定位&#xff1a; 专注于为Apple Vision Pro应用开发者提供一站式、全方位的专业咨询服务&#xff0c;致力于成为开发者在空间计算时代中不可或缺的合作伙伴&#xff0c;共同打造“下一个大事件”。 二、核心业务优化&#xff1a; visionOS策略咨询&#xff1a; 深入…

【氵】Archlinux+KDE Plasma+Wayland 安装nvidia驱动 / 开启HDR

参考: NVIDIA - Arch Linux 中文维基 &#xff08;其实就是把 wiki 简化了一下 注&#xff1a;本教程适用 GeForce 930 起、10 系至 20 系、 Quadro / Tesla / Tegra K-系列以及更新的显卡&#xff08;NV110 以及更新的显卡家族&#xff09;&#xff0c;此处以 RTX3060 为例 …

LlamIndex二 RAG应用开发

在AutoGen)系列后&#xff0c;我又开始了LlamIndex 系列。欢迎查询LlamaIndex 一 简单文档查询 - 掘金 (juejin.cn)了解LlamIndex&#xff0c;今天我们来看看LlamIndex的拿手戏&#xff0c;RAG应用开发。 何为RAG&#xff1f; RAG全称"Retrieval-Augmented Generation&q…

MySQL之创建高性能的索引和查询性能优化(一)

创建高性能的索引 减少索引和数据的碎片 B-Tree索引可能会碎片化&#xff0c;这会降低查询的效率。碎片化的索引可能会以很差或者无序的方式存储在磁盘上。根据设计&#xff0c;B-Tree需要随机磁盘访问才能定位到叶子页&#xff0c;所以随机访问是不可避免地。然而&#xff0…

大田作业全覆盖算法

概述 大田作业全覆盖算法是指在农业生产中&#xff0c;通过合理的路径规划和作业安排&#xff0c;实现对田间作业的全覆盖&#xff0c;避免遗漏任何区域&#xff0c;提高作业效率和质量。该算法通常用于农业机械&#xff0c;如拖拉机、无人机、自动化农机等。以下是实现大田作…

vue处理json数据

背景&#xff1a;后端返回的数据不是我想要的&#xff0c;现在需要把 name 替换为title&#xff08;小声蛐蛐&#xff1a;又让我处理数据&#xff09; 后端返回数据格式 修改字段操作&#xff1a;&#xff08;使用递归遍历的方式将title属性赋了name的值&#xff09; renderT…

shell脚本对编码和行尾符敏感吗

问题 我正在 macOS 上制作一个 NW.js 应用程序&#xff0c;并想通过双击图标在开发模式下运行该应用程序。在第一步中&#xff0c;我试图使我的 shell 脚本正常工作。 在 Windows 上使用 VS Code&#xff0c;我在项目的根目录下创建了一个 run-nw 文件&#xff0c;包含以下内…

详细分析Mysql临时变量的基本知识(附Demo)

目录 前言1. 用户变量2. 会话变量 前言 临时变量主要分为用户变量和会话变量 1. 用户变量 用户变量是特定于会话的&#xff0c;在单个会话内可以在多个语句中共享 以 符号开头在 SQL 语句中使用 SET 语句或直接在查询中赋值 声明和赋值 SET var_name value; -- 或者 SE…

深耕低代码,技术赋能企业转型业务

随着信息化时代的飞速发展&#xff0c;企业对于数字化转型的需求日益迫切。在这个背景下&#xff0c;低代码技术应运而生&#xff0c;为企业提供了一种更加高效、灵活的业务解决方案。本文将围绕“深耕低代码&#xff0c;技术赋能企业转型业务”这一主题&#xff0c;深入探讨低…

构建Vue3项目的几种方式,如何简化setup写法

1、说明 在vue2版本中&#xff0c;我们使用vue-cli脚手架进行构建&#xff0c;而切换到Vue3之后&#xff0c;依然可以使用vue-cli脚手架进行构建&#xff0c;但是官方推荐使用vite工具进行构建&#xff0c;下面将介绍几种方式构建vue3项目。 2、使用vue-cli脚手架构建Vue3项目…