python基础知识(六):列表

news2024/11/25 20:38:37

目录

  • 1. 列表及其创建
  • 2. 列表的特点
  • 3. 获取指定元素的索引
  • 4. 获取列表中指定索引的元素
  • 5. 列表的切片操作
  • 6. 列表元素的判断及遍历
  • 7. 列表元素的添加操作
  • 8. 列表的删除
  • 9. 列表元素的修改
  • 10. 列表元素的排序
  • 11. 列表生成式

1. 列表及其创建

列表由一系列按特定顺序排列的元素组成,元素可以是整数,浮点数或者是字符串,由[]括起来。
例如:

# 列表
lst = ['hello', 'world', 99]  # 列表
print(lst)
print(type(lst))
print(lst[0], lst[1], lst[2])

上述代码首先创建了列表lst,并且进行打印输出。
在python中,顺序从0开始,上述最后一行代码是一次打印输出列表的第1、2、3个元素。
在这里插入图片描述

列表的创建可以直接用[]括起来进行创建,也可以用list()函数进行创建。

# 列表的创建
lst = ['hello', 'world', 99]  # 列表创建的第一种方式,使用[]
lst_2 = list(['hello', 'world', 99])  # 列表创建的第一种方式,使用内置函数list()
print(lst)
print(lst_2)
print(lst[0], lst[1], lst[2])
print(lst_2[0], lst_2[1], lst_2[2])

在这里插入图片描述

2. 列表的特点

列表的特点是:
(1) 每个元素具有唯一的索引值,也就是每个元素有自己的序号,第一个元素序号为0,从左往右数的顺序是0,1,2,…,从右往左数的顺序是-1,-2,-3,…;
(2) 列表可以存储重复的元素。

# 列表的特点
# 有序排序
lst = ['hello', 'world', 99]  # 列表
print(lst)
# 索引映射唯一数据 lst = ['hello', 'world', 99]里面三个位置是0,1,2逆序是-1,-2,-3
print(lst[0])
print(lst[-3])
# 列表可以存储重复数据
lst_1 = ['hello', 'world', 99, 99]
print(lst_1)

在这里插入图片描述

3. 获取指定元素的索引

使用index()函数可以获取列表元素中指定元素的索引值。
如果列表中有多个相同元素,只返回第一个元素的索引;如果需要获取某个重复元素的索引值,应该限定其范围。

# 获取指定元素的索引
lst_3 = ['hello', 'world', 99, 'hello']
print(lst_3.index('hello'))  # 获取hello的索引
# 如果列表中有多个相同元素,只返回第一个元素的索引
print(lst_3.index('hello', 1, 4))  # 获取hello的索引,在一定的范围内

在这里插入图片描述

4. 获取列表中指定索引的元素

# 列表的查询
"""正向索引0到N-1,逆向索引从-1开始递减,即-N到-1"""
lst_4 = ['hello', 'world', 99, 'hello', 'world', 99]
print(lst_4[2])  # 获取索引为2的元素
print(lst_4[-3])  # 获取索引为-3的元素

在这里插入图片描述

5. 列表的切片操作

列表的切片操作是获取列表的部分元素或者全部元素,常用方法是:

lst2 = lst1[起始值:终止值:步长]

上述含义是切片开始为起始值,终止为终止值但不到终止值。

# 列表的切片操作,获取多个元素
# 切片的结果是原列表的拷贝
lst_5 = [10, 20, 30, 40, 50, 60, 70, 80]
print(lst_5[1:6:1])  # 切片开始为1,终止为6但不到6,步长为1
# 切出来的是一个新的列表对象
lst_6 = lst_5[1:6:1]
print(id(lst_5))
print(id(lst_6))
print(lst_5[1:6])  # 切片开始为1,终止为6但不到6,默认步长为1
print(lst_5[1:6:2])  # 切片开始为1,终止为6但不到6,步长为2
print(lst_5[:6:2])  # 切片默认开始为0,终止为6但不到6,步长为2
print(lst_5[1::2])  # 切片开始为1,默认终止到N-1包括N-1,步长为2
# 步长为负数
print(lst_5)
print(lst_5[::-1])  # 逆序输出列表
print(lst_5[7::-1])  # 逆序输出列表7开始,步长-1
print(lst_5[6:0:-2])  # 逆序输出列表6开始,步长-2,,到0不包括0

在这里插入图片描述
在这里插入图片描述

6. 列表元素的判断及遍历

判断某一元素是否在列表中,常用in来判断;
列表元素的变量常常用for循环变量

# 列表元素的判断及遍历
lst_7 = [10, 20, 'python', 'hello']
print(10 in lst_7)  # True
print(100 in lst_7)  # False
print(10 not in lst_7)  # False
print(100 not in lst_7)  # True
# 遍历列表中的元素
for i in lst_7:
    print(i)

在这里插入图片描述
在这里插入图片描述

7. 列表元素的添加操作

(1) 列表的末尾添加一个元素用append()函数,增加元素之后还是同一列表。

# 列表的末尾添加一个元素 append()
lst_8 = [10, 20, 30]
print('原列表', lst_8)
lst_8.append(100)
lst_9 = lst_8
print('新列表', lst_9)
print(id(lst_8), id(lst_9))  # 增加元素之后还是同一列表
lst_10 = ['hello', 'python']
lst_8.append(lst_10)
print(lst_8)
# 使用append()只能在列表的末尾添加一个元素,会把['hello', 'python']当成一个元素

在这里插入图片描述
在上述代码中,使用append()只能在列表的末尾添加一个元素,会把[‘hello’, ‘python’]当成一个元素。
(2) 列表的末尾添加至少一个元素用extend()函数

# 列表的末尾添加至少一个元素 extend()
lst_8.extend(lst_10)
print(lst_8)

在这里插入图片描述

(3) 列表的任意位置插入一个元素用insert()函数

# 列表的任意位置插入一个元素 insert()
lst_8.insert(1, 90)  # 索引为1的位置上添加90
print(lst_8)

在这里插入图片描述

(4) 列表的任意位置至少插入一个元素用切片

# 列表的任意位置至少插入一个元素
lst_11 = ['hell0', 'world']
lst_8[1:] = lst_11  # 从1开始后面的数全部切掉,用新的列表替换
print(lst_8)
lst_8[1:1] = lst_11  # 从1开始后面的数全部切掉,用新的列表替换,相当于在1的位置上插入
print(lst_8)

在这里插入图片描述
完整代码:

# 列表元素的添加
# 列表的末尾添加一个元素 append()
lst_8 = [10, 20, 30]
print('原列表', lst_8)
lst_8.append(100)
lst_9 = lst_8
print('新列表', lst_9)
print(id(lst_8), id(lst_9))  # 增加元素之后还是同一列表
lst_10 = ['hello', 'python']
lst_8.append(lst_10)
print(lst_8)
# 使用append()只能在列表的末尾添加一个元素,会把['hello', 'python']当成一个元素
# 列表的末尾添加至少一个元素 extend()
lst_8.extend(lst_10)
print(lst_8)
# 列表的任意位置插入一个元素 insert()
lst_8.insert(1, 90)  # 索引为1的位置上添加90
print(lst_8)
# 列表的任意位置至少插入一个元素
lst_11 = ['hell0', 'world']
lst_8[1:] = lst_11  # 从1开始后面的数全部切掉,用新的列表替换
print(lst_8)
lst_8[1:1] = lst_11  # 从1开始后面的数全部切掉,用新的列表替换,相当于在1的位置上插入
print(lst_8)

8. 列表的删除

(1) 从列表中移除一个元素用remove()函数,如果有重复元素,只移除第一个元素。

lst_12 = [10, 20, 30, 40, 50, 60, 30]
lst_12.remove(30)  # 从列表中移除一个元素,如果有重复元素,只移除第一个元素
print(lst_12)

在这里插入图片描述

(2) 删除指定位置元素用pop()函数,不指定位置时,默认删除最后一个元素

# 删除指定位置元素,不指定位置时,默认删除最后一个元素
lst_12.pop(1)
print(lst_12)
lst_12.pop()
print(lst_12)

在这里插入图片描述

(3) 删除至少一个元素用切片


# 切片,删除至少一个元素,将产生一个新的列表对象
lst_13 = lst_12[1:3]  # 保留原列表1-3但不包括3的元素
print('原列表', lst_12)
print('新列表', lst_13)
lst_12[1:3] = []  # 将列表的1,2的数删除,不产生新的列表
print(lst_12)

在这里插入图片描述
(4) 清除列表的所有元素用clear()函数

# 清除列表的所有元素,clear()
lst_12.clear()
print(lst_12)

在这里插入图片描述
完整代码:

# 列表的删除
lst_12 = [10, 20, 30, 40, 50, 60, 30]
lst_12.remove(30)  # 从列表中移除一个元素,如果有重复元素,只移除第一个元素
print(lst_12)
# 删除指定位置元素,不指定位置时,默认删除最后一个元素
lst_12.pop(1)
print(lst_12)
lst_12.pop()
print(lst_12)
# 切片,删除至少一个元素,将产生一个新的列表对象
lst_13 = lst_12[1:3]  # 保留原列表1-3但不包括3的元素
print('原列表', lst_12)
print('新列表', lst_13)
lst_12[1:3] = []  # 将列表的1,2的数删除,不产生新的列表
print(lst_12)
# 清除列表的所有元素,clear()
lst_12.clear()
print(lst_12)
# 删除列表对象 del

9. 列表元素的修改

修改单个元素是直接对指定索引值的元素进行修改,多个元素修改用切片。

# 列表元素的修改
lst_14 = [10, 20, 30, 40]
# 一次修改一个值
lst_14[2] = 100  # 将索引为2的值修改成100
print(lst_14)
# 修改列表的多个值
lst_14[1:3] = [300, 400, 500, 600]  # 将1-3但不包括3的值修改成300, 400, 500, 600
print(lst_14)

在这里插入图片描述

10. 列表元素的排序

排序用sort()函数,其中sort()函数和sorted()函数的区别在于sort()函数会改变原列表,sorted()函数不会改变原列表。
举个例子:lst = [ 3 2 4]
使用sort()函数,lst会变成lst = [ 2 3 4]
而使用sorted()函数,会产生lst的复制lst1=[ 2 3 4],但是lst不变还是lst = [ 2 3 4]。

# 列表元素的排序
lst_15 = [10, 20, 99, 98, 100]
print('排序前的列表', lst_15, id(lst_15))
# 开始排序,sort(),默认升序排序,不产生新的列表
lst_15.sort()
print('排序后的列表', lst_15, id(lst_15))
# 降序排序 sort(reverse=True),不产生新的列表
lst_15.sort(reverse=True)
print('排序后的列表', lst_15, id(lst_15))
# 升序排序 sort(reverse=False),不产生新的列表
lst_15.sort(reverse=False)
print('排序后的列表', lst_15, id(lst_15))
print('*' * 50)
# 升序排序
lst_15 = [10, 20, 99, 98, 100]
lst_16 = sorted(lst_15)  # 升序排序,产生一个新的列表
print('排序前的列表', lst_15, id(lst_15))
print('排序后的列表', lst_16, id(lst_16))

# 降序排序
lst_15 = [10, 20, 99, 98, 100]
lst_16 = sorted(lst_15, reverse=True)  # 降序排序,产生一个新的列表
print('排序前的列表', lst_15, id(lst_15))
print('排序后的列表', lst_16, id(lst_16))

在这里插入图片描述
在这里插入图片描述

11. 列表生成式

列表生成式是for循环和列表结合的快速生成列表元素的一种方式

# 列表生成式
# 产生1-9的整数列表
lst_17 = [i for i in range(1, 10)]
print(lst_17)
# 产生1-9的整数平方列表
lst_17 = [i * i for i in range(1, 10)]
print(lst_17)

lst_17 = [i for i in range(2, 12, 2)]
print(lst_17)

在这里插入图片描述

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

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

相关文章

如何设计一份优秀的 PPT 文档?

设计一份优秀的 PPT 需要考虑以下几个方面: 目标和受众:明确你的 PPT 的目标是什么,以及你的受众是谁。这将帮助你确定内容的重点和风格。结构和流程:确定清晰的结构和流程,使你的 PPT 有逻辑性。使用标题、副标题和分…

算法与数据结构(三)——排序算法大总结

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序 一、插入排序二、选择排序三、冒泡排序四、归并排序 一、插入排序 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫…

三、DMSP/OLS、NPP/VIIRS等夜间灯光数据能源碳排放空间化——灯光指数计算(二)

一、前言 续上一节,建成区提取方式有很多种,本文主要介绍一种区别于参考比较法、突变检测法等的领域分析提取建成区范围。 本文以广州市为例,基于领域分析提取2020年广州市建成区范围。 二、具体步骤 (1)加载数据并将广州市夜间灯光数据提取出来 (2)搜索"邻域…

【前端】Vue项目中 JSON 编辑器的使用

Vue项目中 JSON 编辑器的使用 一、背景描述二、vue-json-edit2.1 依赖安装2.2 示例代码2.3 效果图 三、vue-json-pretty3.1 依赖安装3.2 示例代码3.3 效果图 四、bin-code-editor4.1 依赖安装4.2 示例代码4.3 效果图 五、vue-json-views5.1 依赖安装5.2 示例代码5.3 效果图5.4 …

json库——jsoncpp

一、jsoncpp简介 JsonCpp是一个开源的C库,用于解析和生成JSON(JavaScript Object Notation)数据格式。JSON是一种轻量级的数据交换格式,广泛用于各种应用程序和网络服务中。 JsonCpp提供了简单和易用的API,可以方便地解…

C Primer Plus第十七章编程练习答案

学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 有些题目函数定义在书本存在&#xff…

路径规划算法:基于鸽群优化的路径规划算法- 附代码

路径规划算法:基于鸽群优化的路径规划算法- 附代码 文章目录 路径规划算法:基于鸽群优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法鸽群…

Python编程面试题及答案(20例)

以下是一些常见的Python编程面试题以及它们的答案: 1.解释Python中的 GIL(全局解释器锁)是什么,它对多线程编程有什么影响? 答案:GIL是Python解释器中的一个机制,它确保在任何给定时间只有一个…

超详细Redis入门教程——Redis 主从集群(上)

前言 本文小新为大家带来 Redis 主从集群 相关知识,具体内容包括主从集群搭建(包括:伪集群搭建与配置,分级管理,容灾冷处理),主从集群搭建(包括:主从复制原理&#xff0c…

MySQL数据库从入门到精通学习第7天(表数据的增、删、改操作)

表数据的增、删、改操作 使用INSERT...VALUES语句插入数据修改数据删除数据 使用INSERT…VALUES语句插入数据 语法: INSERT [INTO] 数据表名[(字段名...)] VALUES ({值 | DEFAULT},...),()...; [INTO] 数据表名:可选项,用于指定被操作的数…

手把手教你rtsp流媒体分析(引导篇,欢迎订阅专栏)

系列音视频开发 文章目录 系列音视频开发前言一、RTSP是什么?二、RTP是什么?三、RTCP是什么?四、RTSP 源码学习五、H265 RTSP流总结 前言 在安防行业中,onvif协议与gb协议是两种标准,gb是国内安防行业的标准&#xff…

Go Web下gin框架使用(二)

〇、gin 路由 Gin是一个用于构建Web应用程序的Go语言框架,它具有简单、快速、灵活的特点。在Gin中,可以使用路由来定义URL和处理程序之间的映射关系。 r : gin.Default()// 访问 /index 这个路由// 获取信息r.GET("/index", func(c *gin.Con…

康耐视In-Sight2800相机的使用

In-Sight2800相机注册分类程序 一、登录相机 二、图像导入 IS相机支持拍摄图像和从文件中导入图像 如选择从文件中导入图像,文件夹选择位置在页面左下方,如下图 三、注册分类器 在检查模块注册分类器,注册图像需要一张一张去学习&#x…

儿童节到了,我用HTML和CSS画了一个小朋友

文章目录 前言一、关于HTML和CSS二、开始编码2.1 在HTML正文中配置好元素2.2 开始写各个元素的CSS2.3 效果图展示 总结 前言 官方告知我今天参加活动会得勋章,于是想了半天,总得创作一点东西,于是翻出来多年前的箱底技术,用CSSHT…

Kubernetes集群架构与组件介绍

个人博客 一、集群架构 二、主要组件 1.kubelet 该组件运行在每个Kubernetes节点上,用于管理节点。用来接收、处理、上报kube-apiserver组件下发的任务。 主要负责所在节点上的Pod资源对象的管理,例如Pod资源对象的创建、修改、监控、删除、驱逐及Pod…

内网安全:初探隧道技术

目录 防火墙必备知识 域控-防火墙组策略对象同步 域控 - 防火墙组策略不出网上线 MSF上线 CS - ICMP上线 注意:隧道技术是后渗透手段,是在已经取得权限后的手段 域控-组策略同步 防火墙必备知识 学习防火墙的目标是知道了解防火墙的一些常见配置…

ChatGPT应用助推跨境电商发展,低代码凭啥不行?!

随着互联网信息技术的不断发展,随之衍生的诸多产业也在蓬勃发展,而跨境电商就是互联网信息技术发展下的典型产物。 如何定义? 跨境电商指的是通过互联网销售商品或服务,跨越国家或地区边界,实现国际贸易的一种商业模式…

Linux 实操篇-实用指令

Linux 实操篇-实用指令 指定运行级别 基本介绍 运行级别说明: 0 :关机 1 :单用户【找回丢失密码】 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界…

开发移动端官网总结_Vue2.x

目录 1、自定义加载中效果 2、HTML页面注入环境变量 / 加载CDN和本地库 3、在 Vue 中使用 wow.js 4、过渡路由 5、全局监听当前设备,切换PC端和移动端 6、移动端常用初始化样式 7、官网默认入口文件 8、回到顶部滑动过渡效果(显示与隐藏、滑动置…

由于找不到vcruntime140_1.dll无法继续执行此代码的三个解决方法

vcruntime140_1.dll是Microsoft Visual C Redistributable for Visual Studio的一部分,它是一个DLL文件,包含用于运行Microsoft Visual C创建的应用程序所需的Microsoft Visual C组件的代码和数据。这个DLL通常会随着应用程序安装到Windows系统中。如果这…