【Python】序列类型①-列表

news2024/11/26 11:44:11

文章目录

  • 1. 前言
  • 2. 列表的定义
  • 3. 列表的下标访问
    • 3.1 嵌套列表的下标
  • 4. 列表的切片操作
  • 5. 列表的遍历
    • 5.1 使用for循环进行遍历
    • 5.2 while循环进行遍历
  • 6.添加列表元素
    • 6.1 使用append方法添加元素
    • 6.2 使用insert方法添加元素
  • 7. 列表的拼接
    • 7.1 使用 + 进行拼接
    • 7.2 使用extend 进行拼接
    • 7.3 使用 += 进行拼接
  • 8. 列表的常用方法

1. 前言

序列是一块用来存放多个值的内存空间.Python中常用的数据结构有列表,元组,字典,字符串,集合等. 本篇文章主要讲解列表的常见操作.

2. 列表的定义

列表是python中内置的可变序列,是包含若干元素的有序连续内存空间
所有的元素存放在 [] 中
元素之间用逗号隔开

列表的定义有两种方式:

  1. 使用字面值创建列表
  2. 使用list()创建列表

实例:

# 使用使用字面值创建列表
# []就代表一个空列别
a = []
print(type(a))

# 使用list()创建列表
b = list()
print(type(b))

# 输出的结果为:
# <class 'list'>
# <class 'list'>

列表可以在定义时进行初始化,但与C/Java等里面的数组不同的是,数组只能放同一类型的变量,例如整型数组就只能放整数类型的元素,而列表不同,列表可以存放不同数据类型的元素
示例:

a = [1,2,3]
print(a)
# 输出[1, 2, 3]

b = list((1,2,3))
print(b)
# 输出[1, 2, 3]

c = [1,1.2,"ads",False,[1,2,3]];#也可以存放列表的数据
print(c)
# 输出[1, 1.2, 'ads', False, [1, 2, 3]]

3. 列表的下标访问

对列表的元素,可以通过 列表名[下标] 这种形式进行访问
注意:这里的下标都是从0开始的 ,下标的有效范围是0到列表长度-1
如果超出下标的有效范围,那么就会出现异常
列表的长度可以直接使用内置函数len(列表名)获取
len()不止能求列表的长度,也可以求字符串、元组、字典等这个类型的长度

# 下标的范围[0,2]
a = [1,2,3]
print(len(a))
# 输出结果:3
print(a[1]) #对列表的元素进行访问
# 输出结果:2
a[2] = 5 #对列表的元素进行修改
print(a)
# 输出结果:[1, 2, 5]

python中的下标也可以写成负数的形式

a = [1,2,3]
print(a[len(a)-1])
# 输出结果:3
print(a[-1])
# 输出结果:3

对于这里面的-1可以理解为len(列表名)-1把len(列表名)这个给省略了,也可以理解为是倒数第一个元素,只要能记住,大家怎么理解都行
如果是用负数表示下标,那么下标的有效范围就是[-len(列表名),-1]

3.1 嵌套列表的下标

在讲列表定义的时候说过列表的元素类型不限制,当然也就可以在列表中存放列表
示例:

a = [[1, 2, 3], [4, 5, 6]]

对于这种列表里面是嵌套的列表,也是支持下标索引的
例如:

a = [[1, 2, 3], [4, 5, 6]]
print(a[0][1])
# 输出结果:
# 2

上面的代码可以分成两步进行理解:

  1. 可以把[1,2,3]和[4,5,6]看出是a列表中的两个元素,a[0]就是得到[1,2,3]这个列表
  2. a[0][1]就相当于访问了[1,2,3]这个列表的第二个元素,所以输出结果为2

4. 列表的切片操作

切片操作使Python中有序序列的重要操作之一. 切片操作的本质上是截取一段子序列.

语法格式为: [start: stop: step]
 start: 切片的开始位置
 stop: 切片的结束位置(但不包含这个位置)
 step: 切片的步长,步长可以省略时默认是1,如果是省略可以顺便省略最后一个冒号

示例1:

a = [1, 2, 3, 4, 5, 6, 7]
print(a[2:5])

# 输出结果:
[3, 4, 5]

列表的下标从0开始,因此下标为2的值为3,5下标的值是6,因为是不包含5这个下标的,且默认的步长为1,因此切片出来的值为[3,4,5].
切片操作是很灵活的,除了步长可以省略,前面的两个表示范围的数字也是可以省略的

示例2:

a = [1, 2, 3, 4, 5, 6, 7]
print(a[:])
# [1, 2, 3, 4, 5, 6, 7]
print(a[3:])
# [4, 5, 6, 7]
print(a[:3])
# [1, 2, 3]
print(a[:-1])
# [1, 2, 3, 4, 5, 6]
  • 当前面两个数都省略时,表示的就是整个列表.
  • 省略结束位置,就是从开始位置一直到列表结束
  • 省略开始位置,就是从0下标一直到结束位置(不包括结束位置)
  • 切片操作中的位置也可以写成负数形式

示例3:
带有步长的切片

a = [1, 2, 3, 4, 5, 6, 7]
print(a[::2])
#[1, 3, 5, 7]

步长除了取整数,也可以是负数.如果步长为负数则代表是从后往前取.

a = [1, 2, 3, 4, 5, 6, 7]
print(a[::-1])
# [7, 6, 5, 4, 3, 2, 1]

需要注意的是与下标访问列表元素不同,切片操作不会因为下标越界而抛出异常.而是尽可能地获取到所需要的元素
示例4:

a = [1, 2, 3, 4, 5, 6, 7]
print(a[:100])
# [1, 2, 3, 4, 5, 6, 7]

虽然上面我想要获取的列表元素是a列表下标从0开始到100位置(不包括100)之间的元素,但a列表的长度是远远不够100的,所以在进行切片时,在a列表的尾部时就进行截断了.因此使用切片操作可以使代码具有更强的健壮性

5. 列表的遍历

5.1 使用for循环进行遍历

使用for循环遍历列表有两种方式
方法1:

a = [1, 2, 3]
for elem in a:
    print(elem)

# 1
# 2
# 3

上述代码中,elem相当于使一个临时变量,值就是a列表中的每一个元素
方法2:

a = [1, 2, 3]

for i in range(len(a)):
    print(a[i])

# 1
# 2
# 3

5.2 while循环进行遍历

a = [1, 2, 3]
i = 0
while i < len(a):
    print(a[i])
    i += 1

# 1
# 2
# 3

6.添加列表元素

在列表中新增元素有两种方式,一种是 使用append方法,另一种是使用insert方法

6.1 使用append方法添加元素

append方法是往列表的末尾新增元素,使用的方法很简单

语法: 列表名.append(新增元素)

a = [1, 2, 3]
a.append(4)
print(a)
# [1, 2, 3, 4]

6.2 使用insert方法添加元素

与append方法不同,insert方法可以往指定位置新增元素.

a = [1, 2, 3]
a.insert(1, 'insert')
print(a)
# [1, 'insert', 2, 3]

需要注意的是,如果指定的位置超过了列表的长度,只会插入列表的末尾

a = [1, 2, 3]
a.insert(100, 'insert')
print(a)
# [1, 2, 3, 'insert']

7. 列表的拼接

7.1 使用 + 进行拼接

a = [1, 2, 3]
b = [4, 5, 6]
c = a + b
print(c)
# [1, 2, 3, 4, 5, 6]

使用 + 拼接本质上是产生了一个更大的列表,不会修改原来的列表

7.2 使用extend 进行拼接

extend 是在原有的列表基础上将另外一个列表进行拼接. 这个方法会修改原来的列表

a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a)
# [1, 2, 3, 4, 5, 6]

7.3 使用 += 进行拼接

a = [1, 2, 3]
b = [4, 5, 6]
a += b
print(a)
# [1, 2, 3, 4, 5, 6]

8. 列表的常用方法

以下是列表中一些常用的内置函数:

方法说明
列表名.append(x)将元素x添加到列表的最后位置
列表名.extend(L)将列表L中的所有元素添加到列表的尾部
列表名.insert(index,x)在列表的index位置插入元素x
列表名.remove(x)在列表中删除首次出现的元素x
列表名.pop([index])删除并返回列表对象的指定位置的元素,默认为最后一个元素
列表名.clear()删除列表中所有元素,但保留列表对象
列表名.index(x)返回第一个值为x的元素下标,做不存在x,则抛出异常
列表名.count(x)返回指定元素x在列表中的个数
列表名.reverse()对列表元素进行原地翻转
列表名.sort(key=None,reverse=False)对列表元素进行原地排序
列表名.copy()对列表元素进行浅拷贝
len(列表名)统计列表中元素的个数

感谢你的观看!希望这篇文章能帮到你!
python专栏在不断更新中,欢迎订阅!
“愿与君共勉,携手共进!”
在这里插入图片描述

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

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

相关文章

( 字符串) 696. 计数二进制子串 ——【Leetcode每日一题】

❓696. 计数二进制子串 难度&#xff1a;简单 给定一个字符串 s&#xff0c;统计并返回具有相同数量 0 和 1 的非空&#xff08;连续&#xff09;子字符串的数量&#xff0c;并且这些子字符串中的所有 0 和所有 1 都是成组连续的。 重复出现&#xff08;不同位置&#xff09…

动态规划01背包问题

01背包问题 假设你是一名经验丰富的探险家&#xff0c;背着背包来到野外进行日常探险。天气晴朗而不燥热&#xff0c;山间的风夹杂着花香&#xff0c;正当你欣赏这世外桃源般的美景时&#xff0c;突然&#xff0c;你发现了一个洞穴&#xff0c;这个洞穴外表看起来其貌不扬&…

UE动画状态机的事件触发顺序测试

正常A状态过渡到B状态的事件顺序&#xff1a; 整个流程为&#xff1a; 调用B状态的On Become Relevant事件调用B状态的On Update事件调用A状态的Left State Event事件调用B状态的Entered State Event事件调用B状态的Start Transition Event事件调用B状态的End Transition Even…

网络安全:通过445端口暴力破解植入木马。

网络安全&#xff1a;通过445端口暴力破解植入木马。 木马制作工具&#xff0c;如&#xff1a;灰鸽子等等 445端口是文件共享端口。可以进入对方文件硬盘进行植入木马&#xff1a; 使用文件共享进入对方磁盘&#xff1a; 在cmd输入net use \\x.x.x.x\ipc$ 之后会让你输入账号…

Vue——组合式函数

目录 什么是“组合式函数”&#xff1f;​ 鼠标跟踪器示例​ 异步状态示例​ 约定和最佳实践​ 命名​ 输入参数​ 返回值​ 副作用​ 使用限制​ 通过抽取组合式函数改善代码结构 选项式 API 中使用组合式函数​ 与其他模式的比较​ 和 Mixin 的对比​ 和无渲染…

mybatis逆向生成器

目录 官网xml pom引入 在resources新建generatorConfig.xml xml修改 生成 官网xml MyBatis Generator Core – MyBatis Generator XML Configuration File Reference pom引入 <!-- mybatis逆向生成器 --><dependency><groupId>org.mybatis.gener…

anaconda 共享虚拟环境

需求背景 A,B,C… 多台服务器。 有一个公共的NAS服务器N&#xff0c;存储所有数据资料。 N分别挂载到A,B,C…服务器上&#xff0c;便于所有服务器访问数据。 挂载路径在所有服务器上统一为/nas/。 现状&#xff1a; A,B,C&#xff0c;… 上分别安装anaconda&#xff0c;分别创…

网络钓鱼仍然是安全行业的祸害

随着网络犯罪分子采用更先进的方法&#xff0c;网络钓鱼诈骗继续构成重大风险。 根据 Zscaler 最新发布的 2023 ThreatLabz 网络钓鱼报告&#xff0c;随着网络钓鱼工具包和ChatGPT等人工智能 (AI) 工具的广泛使用&#xff0c;网络犯罪分子比以往任何时候都更容易创建有针对性的…

数字图像处理-matlab图像内插

matlab图像内插 最近邻插值双线性插值双三次插值总结 最近邻插值 目标各像素点的灰度值代替源图像中与其最邻近像素的灰度值 参考博客 假设一个2X2像素的图片采用最近邻插值法需要放大到4X4像素的图片&#xff0c;右边该为多少&#xff1f; 最近邻插值法坐标变换计算公式&…

40.java-单列集合Set(HashSet,LinkedHashSet,TreeSet)

Set集合 1.Set集合特点2.Set集合实现类3. HashSet3.1 底层原理3.1.1 哈希表组成3.1.2 哈希值3.1.3 对象的哈希值特点 3.2 数据添加元素的过程3.3 HashSet的三个问题3.4 实例&#xff1a;去除重复元素 4. LinkedHashSet5. TreeSet5.1 特点5.2 集合默认规则5.3 例子5.4 两种比较规…

泛型——List 优于数组

数组与泛型有很大的不同&#xff1a; 1. 数组是协变的&#xff08;covariant&#xff09; 意思是&#xff1a;如果Sub是Super的子类型&#xff0c;则数组类型Sub[] 是数组类型Super[] 的子类型。 2. 泛型是不变的&#xff08;invariant&#xff09; 对于任何两种不同的类型Ty…

Linux下进程间通信

Linux下进程间通信 进程间通信的目的进程间通信的手段的分类管道什么是管道管道原理匿名管道创建匿名管道文件匿名管道的特点匿名管道的4种场景 有名管道有名管道的创建有名管道总结命名管道的打开规则 system V 共享内存共享内存原理建立通信回收共享内存开始通信命令操作共享…

常用的JVM参数选项

目录 打印设置的XX选项及值 堆、栈、方法区等内存大小设置 OutOfMemory相关的选项 垃圾收集器相关选项 GC日志相关选项 其他参数 通过Java代码获取JVM参数 打印设置的XX选项及值 程序运行时JVM默认设置或用户手动设置的XX选项 -XX:PrintCommandLineFlags 打印所有…

Photoshop如何使用绘画和图像修饰之实例演示?

文章目录 0.引言1.给图像添加渐变色效果2.快速创建一副素描画3.清除图像中多余的景物4.快速融合两张图像5.调整图像光影6.人像面部瑕疵修除7.美化眼睛 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对PS进行了学习&#xff0c;本文通过《Photoshop2021入门教程》及其…

LeetCode 与组合数相关的题目

216. 组合总和 III 方法&#xff1a;递归 class Solution { private:vector<vector<int>> res;vector<int> path;void solve(int k, int goal, int cur, int idx) {if (cur > goal) return;if (path.size() k) {if (cur goal) res.push_back(path);re…

小球下落(dropping balls)uva679

题目描述 原文链接 题目链接 上面中文总结一下&#xff1a; D代表这棵树深度&#xff0c;那么一共就有2^d -1 个结点 每个结点从左到右&#xff0c;从上往下&#xff0c;从1开始递增编号&#xff0c;那么也就是说对于结点k来说&#xff0c;左子结点与右子结点的编号分别为…

C/C++每日一练(20230430)

目录 1. 分割回文串 &#x1f31f;&#x1f31f; 2. 六角填数 ※ 3. 查找书籍 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 分割回文串 给你一个字符串 s&#x…

unity 渲染性能分析工具

目标 既然要优化&#xff0c;肯定要有个目标&#xff1a; pc上一般要求&#xff1a;一秒渲染60帧 移动端&#xff1a;一秒渲染30帧 这应该是最低的要求&#xff0c;如果游戏运行时&#xff0c;游戏帧率有变化&#xff0c;人眼能够明显的感觉到帧率下降。 优化的首要规则是找到…

CMake | 01 - CMake快速上手(3.26.3)

专栏介绍 本专栏记录了博主入门CMake的笔记。 源码仓库欢迎Star&#xff1a;https://github.com/Mculover666/cmake_study。 一、CMake概述 1. 什么是CMake CMake官网&#xff1a;https://cmake.org/ CMake is an open-source, cross-platform family of tools designed t…

17.计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度

说明书 MATLAB代码&#xff1a;计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度 关键词&#xff1a;碳捕集 虚拟电厂 需求响应 优化调度 电转气协同调度 参考文档&#xff1a;《计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度》完全复现 仿真平台&#xff1a…