Python基础学习笔记(六)——列表

目录

  • 一维列表
    • 1. 索引的查询与返回
    • 2. 切片
    • 3. 添加元素
    • 4. 删除元素
    • 5. 更改元素
    • 6. 排序
    • 7. 生成式

一维列表

  列表,也称数组,是一种有序、可变、允许重复元素的组合数据结构,属于可变序列,由方括号[]内、用逗号分隔的一组元素组成。

  列表可存储多个元素以方便对一组数据整体操作。不同的列表的内存地址互不相同,即id独立。

  列表有两种创建方式:直接将目的列表赋予变量,称为赋值创建;使用list()函数将任意组合数据类型转化为列表,称为引用创建

  下文的列表均指一维列表

# 赋值创建
lst = [1, 2, 3]
# 引用创建(字典转列表):转化前后元素不变
lst = list({'1': 'a', '2': 'b', '3': 'c', })
print(lst, type(lst), id(lst))
[1, 2, 3] <class 'list'> 1937556730752

  列表的元素可以是任意数据类型的对象引用,也就是一维指针。所以列表实际上是一种二维指针,用于存储一维指针。

  在Python中,通常不采用这种描述,因为Python不支持指针的直接操作。但是,列表的索引可以模拟二级指针。

1. 索引的查询与返回

  索引描述了序列中的元素的位置,是用于访问元素的操作方法,分为正数索引负数索引

  序列中的元素从左到右的正数索引依次为0, 1, 2, ... , n从右到左的负数索引依次为-1, -2, ... , -n

  可以通过查询索引获取对应元素的值

lst = [1, 2, 3]
print(lst[0], lst[-3])
1 1

  也可以使用index()函数,通过元素的值返回对应的正数索引。若列表存在相同的元素,只返回最小的正数索引;若列表不存在对应的元素,报错ValueError.

  index(arg1, arg2=0, arg3=len(list))限定索引区间默认步长为1,开始索引为0,结束索引为列表长度(元素个数),区间形式与range函数相似,即左闭右开

  若arg3未传递,传递了负数,或者传递了小于arg2的值,则参数arg3无效,函数功能为:返回索引为arg2上的指定元素的正数索引。一般不会用到该功能。特别的,若arg2=arg3,一定会报错,因为索引区间为空。

lst = ['1', '2', '3', '4', '1']
# index(element):返回指定元素的索引
print(lst.index('1'))
# index(element, index):返回限定位置上的指定元素的索引
print(lst.index('1', 4))
# index(element, start, stop):返回限定位置区间上的指定元素的索引
print(lst.index('1', 1, 5))
0
4
4


2. 切片

  切片是指获取列表中的子列表,是访问列表中的多个元素的一种方式,其结果是原列表片段的拷贝

  list[start=0:stop=-1:step=1],就是将整数序列range(start,stop,step)作为从原列表所取元素的索引,获取并拷贝这些元素,然后返回一个具有新id的子列表。
  其参数默认值与range类似。特别的,若startstop负数索引,则先转化为正数索引,再遵循range对应。

lst = [1, 2, 3, 4, 5, 6]
print(lst[1:5:2], lst[1:-1:2])
print(id(lst), id(lst[1:5:2]))# 第一个冒号不能省略,第二个可以省略
print(lst[1:5], lst[1::2], lst[:5:2])
print(lst[1:], lst[:5], lst[::2])
[2, 4] 				 [2, 4]
1383891593536 1383891563392[2, 3, 4, 5] 		 [2, 4, 6] 			 [1, 3, 5]
[2, 3, 4, 5, 6] 	 [1, 2, 3, 4, 5] 	 [1, 3, 5]


3. 添加元素

  append(element)函数:在列表末尾添加一个元素
  extend(composition)函数:在列表末尾依次添加一个组合内的元素
  insert(index, element)函数:在指定索引插入一个元素,后续元素索引+1.

  上述的函数没有返回值,也就是说它们的操作是在原列表上进行的,但列表的id仍会改变。

  +运算可以替代extend()函数,但列表没有被分配-运算。

lst = list([1, 2])
# 不能将组合内的元素加入列表
lst.append([3])
print(lst)# 集合是无序组合,添加次序遵循特殊的哈希映射
lst.extend({5, 4})
print(lst)# 也可以简化为赋值运算
lst += (6, 7)	# 元组,一种序列,属于组合类型
print(lst)# 负数索引视为正数索引输入
lst.insert(-7, '0')
print(lst)
[1, 2, [3]]
[1, 2, [3], 4, 5]
[1, 2, [3], 4, 5, 6, 7]
['0', 1, 2, [3], 4, 5, 6, 7]


4. 删除元素

  remove(element)函数:删除一个指定元素,若存在重复元素,取最小正数索引。
  pop(index=-1)函数:删除一个指定索引上的元素,参数默认值为-1.
  clear()函数:清空列表中的所有元素
  del语句可以删除一个指定索引上的元素,也可以删除指定切片范围内的元素,甚至删除列表本身

lst = list([1, 2, 3, 4, 5])
lst.remove(5)
print(lst)lst.pop(0)
print(lst)
lst.pop()
print(lst)lst.clear()
print(lst)lst = list([1, 2, 3, 4, 5])
del lst[0]
print(lst)del lst[1:]
print(lst)del lst
print(lst)
[1, 2, 3, 4]
[2, 3, 4]
[2, 3]
[][2, 3, 4, 5]
[2]
NameError: name 'lst' is not defined.


5. 更改元素

  列表元素的更改主要通过索引查询切片替换,它们的功能与上述的添加和删除有所重叠。

  索引查询不仅能获取指定索引上的元素的值,也可以对它进行修改;切片替换可将切片内的元素依次替换为一个组合内的元素。当切片步长为1时,组合的元素数量不受限制;否则,切片的元素个数须等于组合的元素个数

lst = list([1, 2, 3, 4, 5])
# 逐个修改
lst[0] = 0
print(lst)# 批量修改
lst[1:3] = [10, 20, 30, 40]
print(lst)# 批量删除
lst[1:5] = []
print(lst)# 跳跃替换
lst[::2] = 'ab'
print(lst)
[0, 2, 3, 4, 5]
[0, 10, 20, 30, 40, 4, 5]
[0, 4, 5]
['a', 4, 'b']


6. 排序

  sort(reverse=False)是一个无返回值函数,参数默认值为升序排列,可以对列表内的元素进行排序。对于基本数据类型的元素,数值类型可以互相排序,字符串不能与数值排序
  sorted(reverse=False)与前者的区别在于,它可以返回一个排序后的新列表

  对于值的大小相同,但类型不同的数值,遵循int < float < bool
  字符串的比较将在后续篇章说明,排序算法则在进阶篇中展开。

lst = [0, 1, 1.0, True, 2]
# 升序排列
lst.sort()
print(lst)# 降序排列
print(sorted(lst, reverse=True))
[0, 1, 1.0, True, 2]
[2, 1, 1.0, True, 0]


7. 生成式

  生成式是for遍历的缩简语句,用于快速生成组合,格式为:运算式 for 变量 in 可迭代对象,即:遍历可迭代对象,将其每个元素经运算后的结果加入所生成的组合中。

print([i**2 for i in range(5)])
[0, 1, 4, 9, 16]

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

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

相关文章

【Clickhouse】DB::Exception: Table is in readonly mode问题解决

1. 问题描述 公司电力检修&#xff0c;机房断电再上电之后clickhouse的一张表出现了只读现象 2024.05.20 16:58:08.702472 [ 173655 ] {17C25AD8068BBE9A} <Error> executeQuery: Code: 242, e.displayText() DB::Exception: Table is in readonly mode (version 20.5…

展现金融科技前沿力量,ATFX于哥伦比亚金融博览会绽放光彩

不到半个月的时间里&#xff0c;高光时刻再度降临ATFX。而这一次&#xff0c;是ATFX不曾拥有的桂冠—“全球最佳在线经纪商”(Best Global Online Broker)。2024年5月15日至16日&#xff0c;拉丁美洲首屈一指的金融盛会—2024年哥伦比亚金融博览会(Money Expo Colombia 2024) 于…

【华为OD机试-C卷D卷-200分】文本统计分析(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 有一个文件,包含以一定规则写作的文本,请统计文件中包含的文本数量。 规则如下: 文本以 ";" 分隔,最后一条可以没有 ";" ,但空文本不能算…

数据对大模型预训练效果的影响

文章目录 数据数量的影响数据质量的影响数据集污染数据预处理实践 在训练大语言模型的过程中&#xff0c;预训练数据的质量对模型能力的影响至关重要。已有的研究表明&#xff0c;基于含有噪音、有毒和重复数据的低质量语料库进行预训练&#xff0c;会严重损害模型性能。 数据…

hdfs机器下线维修

HDFS&#xff08;Hadoop Distributed File System&#xff09;是Hadoop分布式文件系统&#xff0c;它设计用来跨多个物理服务器存储大量数据。当HDFS集群中的某个机器需要下线维修时&#xff0c;需要谨慎处理以避免数据丢失或服务中断。以下是处理HDFS机器下线的步骤&#xff1…

[C][C运算][取模/取余运算][隐式类型转换][算术转换]详细讲解

目录 1.取模/取余运算1.取整2.取模 2.隐式类型转换3.算术转换 1.取模/取余运算 1.取整 C语言默认向0取整 – trunc()同作用floor() -> 向-∞取整ceil() -> 向∞取整round() -> 四舍五入 2.取模 定义&#xff1a;如果a和d是两个自然数&#xff0c;d非零&#xff0c…

AI智能体|使用扣子Coze基于IDE创建自定义插件

大家好&#xff0c;我是无界生长。 在使用Coze的过程中&#xff0c;有些个性化场景无法通过插件商店已有的插件满足&#xff0c;这个时候就需要通过自定义插件的方式来实现业务需求。下面将通过一个实际案例来简单介绍下如何使用Coze基于IDE创建自定义插件&#xff0c;完成在Co…

Godot游戏引擎有哪些优势

哈喽呀&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;众所周知在当今游戏开发领域&#xff0c;各种游戏引擎如雨后春笋般涌现&#xff0c;为开发者提供了丰富的选择。而在这些众多的选择中&#xff0c;Godot游戏引擎以其独特的特性和开放源代码的优势&…

java.util.ConcurrentModificationException异常分析及解决

问题描述 有一个RecycleView视图组件&#xff0c;数据变更得时候进行了增加和删除操作&#xff0c;频繁触发 增加、删除数据得操作&#xff0c;低概率出现此问题&#xff0c;代码片段无法展示&#xff0c;可以语言描述一下代码片段 recycleview使用了adapter来展示数据adapte…

SpringBoot集成腾讯云敏感词校验API流程

1.pom.xml中引入腾讯云jar配置信息 <dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>4.0.11</version> </dependency> 2.application.yaml中添加配置 tencent…

2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版

简介&#xff1a; 2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版 下载地址 https://www.kuaiyuanya.com/product/article/index/id/33.html 图片&#xff1a;

Microsoft.NET 框架程序设计 —— 基元类型、引用类型与值类型

本文讨论.NET 框架开发人员经常遇到的各种数据类型。熟悉这些类型的不同行为对于一个开发人员来说至关重要。当我刚开始接触.NET框架时,就没有完全理解基元类型、引用类型和值类型之间的一些差别。这种模糊的认识甚至无意间导致了一些难以査找的bug以及性能问题。我希望通过本…

【QT】实时语言切换

前言&#xff1a;一个完整的软件开发通常需要支持多种语言&#xff0c;本文主要讲述实时语言切换开发时的相关解决方案。 1. 制作字库文件 添加标识 在需要被翻译的字符串前面标识tr&#xff0c;如QString str&#xff1d;tr(“hello,world!”); &#xff0c;这很重要&#xf…

使用 Django Rest Framework 构建强大的 Web API

文章目录 安装 Django Rest Framework创建序列化器创建视图和 URL 路由配置认证和权限测试 API Django Rest Framework&#xff08;DRF&#xff09;是一个强大的工具&#xff0c;用于在 Django Web 框架中构建灵活且功能丰富的 Web API。它提供了许多功能&#xff0c;包括序列化…

ubuntu22.04 kubeadm安装k8s集群(从零到有)

ubuntu kubeadm安装k8s集群 前言一、初始化所有ubuntu服务器二、安装kubeadm三、kubeadm初始化节点、加入集群四、安装kubesphere1、下载yaml文件2、运行apply报错3、安装完成。4、忘记密码,强制修改5、Kubesphere其他组件安装前言 k8s 三master 三node所有节点hosts文件添加…

android radiongroup应用举例

android radiongroup应用举例 在 Android 中&#xff0c;RadioGroup 是一个特殊的布局容器&#xff0c;用于包含多个 RadioButton 控件。这些 RadioButton 通常一起使用&#xff0c;以便用户可以从一组选项中选择一个。当用户选择其中一个 RadioButton 时&#xff0c;其他 Rad…

(六)DockerCompose安装与配置

DockerCompose简介 Compose 项目是 Docker 官方的开源项目&#xff0c;负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中&#xff0c;经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现…

线性回归分析

线性回归分析是统计学和数据分析中常用的一种工具&#xff0c;它研究的是因变量与自变量之间的线性关系。在实际应用中&#xff0c;线性回归可以帮助我们理解变量之间的关联&#xff0c;预测未来的趋势&#xff0c;以及进行决策支持。在本选题中&#xff0c;我们将深入探讨线性…

protobuf学习

学习了下protobuf这个工具&#xff0c;可以用来序列化数据结构&#xff0c;而且效率很高&#xff0c;数据可以压缩的更小。 记录下&#xff0c;我这里主要在C#里使用&#xff0c;从NuGet程序包安装以下两个 安装好后可以在该程序目录找到 packages\Google.Protobuf.Tools.3.26.…

在windows中使用wsl下的unbuntu环境

1 unbuntu下载编译环境 编译环境安装命令&#xff1a; sudo apt install gdb sudo apt install gcc sudo apt install g 2 使用vscode正常打开项目&#xff0c;在window中打开的项目&#xff08;官方推荐将项目放在linux中的home目录&#xff09; 但在windows中也可以使用&a…