Python中的列表跟C/C++里面的数组什么关系?

在这里插入图片描述

你好,我是安然无虞。

文章目录

  • Python数据类型·列表
    • 创建列表
    • 新增列表元素
      • append方法
      • insert方法
    • 删除列表元素
      • pop方法
      • remove方法
    • 查找列表元素
      • in相关
      • index方法
    • 下标访问列表元素
      • 负索引
    • 遍历列表元素
    • 子列表提取
    • 拼接列表
      • + 相关
      • extend方法
    • 列表常用接口汇总
      • 列表操作
      • 列表的成员函数

在这里插入图片描述

Python数据类型·列表

列表(list)是一种有序和可更改的集合,列表中允许存在重复的成员。

创建列表

创建空列表

在Python中[]表示一个空列表。比如:

a = []

print(type(a)) # <class 'list'>
print(a) 			 # []

还可以通过list()的方式来创建一个空列表,比如:

a = list()

print(type(a)) # <class 'list'>
print(a) 			 # []

创建非空列表

创建列表时可以在[]中设置列表的初始值。比如:

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

print(type(a)) # <class 'list'>
print(a)       # [1, 2, 3, 4, 5]

需要注意的是,列表可以存放不同类型的元素。比如:

a = [1, 'hello', [2, 3, 4]]

print(type(a)) # <class 'list'>
print(a)	   # [1, 'hello', [2, 3, 4]]

新增列表元素

append方法

使用append方法可以在列表末尾新增一个元素。比如:

a = [1, 2, 3, 4]

a.append('2024')
a.append('dragon year')

print(a) # [1, 2, 3, 4, '2024', 'dragon year']

insert方法

使用insert方法可以指定下标位置新增元素。比如:

a = [1, 2, 3, 4]

a.insert(1, 5)
a.insert(10, 'hello') 

print(a) # [1, 5, 2, 3, 4, 'hello']

说明一下:

  • Python是一种面向对象的编程语言,因此创建出来的列表本质上是一个对象,而这里的append和insert方法都是列表的成员方法
  • 调用insert方法时,如果指定的索引下标超过了列表中的最大下标,则将待插入的元素插入到列表的末尾

删除列表元素

pop方法

使用pop方法可以删除列表最末尾的元素。比如:

a = [1, 2, 3, 4]
a.pop()

print(a) # [1, 2, 3]

使用pop方法还可以删除指定下标位置的元素。比如:

a = [1, 2, 3, 4]
a.pop(1)

print(a) # [1, 3, 4]

remove方法

使用remove方法可以指定删除列表中特定值的元素。比如:

a = [1, 2, 3, 4]
a.remove(1)

print(a) # [2, 3, 4]

如果列表中存在多个特定值的元素,那么remove方法只删除其中首次出现的元素。比如:

a = [1, 2, 3, 4, 1]
a.remove(1)

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

查找列表元素

in相关

使用 in 和 not in 操作符能够判断某个元素是否在列表中存在。比如:

a = [1, 2, 3, 4]

print(1 in a)     # True
print(5 in a)     # False
print(1 not in a) # False
print(5 not in a) # True

index方法

使用index方法也可以判断某个元素在列表中是否存在。比如:

a = [1, 2, 3, 4]

print(a.index(1))   # 0
# print(a.index(5)) # 不存在,抛异常

说明一下:

  • 使用index方法时,如果待查找的元素在列表中,返回其下标,若不在,则抛异常。

下标访问列表元素

这个就不用代码演示了,与C/C++中数组的使用差不多,说明一下即可:

  • 通过下标操作符[]可以读取以及修改指定下标元素的值
  • 如果指定下标的值超出了列表的最大下标,则会抛出异常

负索引

平时我们所说的下标都是从 0 开始的,而在Python中下标是可以取负数的,我们称之为负索引,负索引其实就是从列表的最后一个元素往前,以此为-1,-2,-3… 比如:

   a = [1, 2, 3]
索引:    0  1  2
负索引:  -3 -2 -1

如果想要访问列表的最后一个元素,直接指定下标为-1即可。比如:

a = [1, 2, 3, 4]
print(a[-1])

遍历列表元素

可以使用for循环和while循环,都是比较简单的,这里我们说一下for循环的使用。

Python中for循环可以直接遍历一个可迭代对象。比如:

a = [1, 2, 3, 4]

for i in a:
    print(i)

需要注意的是,上面这个方法对循环变量修改不会影响列表中变量的值。比如:

a = [1, 2, 3, 4]
for i in a:
    print(i)
    i += 10 # 不会影响列表中的元素值

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

除此之外,还可以使用for循环遍历列表元素下标,然后以下标的方式依次遍历列表中的元素。比如:

a = [1, 2, 3, 4]

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

以这种方式访问列表中的元素,可以修改列表中元素的值。比如:

a = [1, 2, 3, 4]
for i in range(len(a)):
    print(a[i])
    a[i] += 10 # 会影响列表中的元素值
    
print(a)       # [11, 12, 13, 14]

子列表提取

[起始下标 : 结束下标] (前闭后开)

[起始下标 : 结束下标]可以从列表中提取出,从起始下标到结尾下标前一个元素的子列表。比如:

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

切片时省略边界

提取子列表的过程也叫做切片的过程,以[起始下标 : 结束下标]的方式切片时可以忽略起始和结束下标。

  • 如果以[起始下标 : ]的方式进行切片,则子列表中的元素包括起始下标的元素及其后续元素
  • 如果以[ : 结束下标]的方式进行切片,则子列表中的元素包括结束下标之前的所有元素
  • 如果以[ : ]的方式进行切片,则子列表中的元素包括原列表中的所有元素

切片示例:

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

切片时指定步长

起始下标 : 结束下标 : 步长的方式切片可以指定步长,每访问一个元素后下标自增几步。比如:

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

切片时指定的步长也可以为负数,这时表示从后往前提取元素。比如:

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

切片时下标越界问题

如果切片时下标超出了有效范围,执行程序后不会抛异常,而是尽可能的把符合要求的元素提取出来。比如:

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

拼接列表

+ 相关

使用 + 可以把两个列表拼接到一起。比如:

a = [1, 2, 3]
b = [4, 5, 6]
c = a + b

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

使用 += 把一个列表拼接到另一个列表的后面。比如:

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

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

extend方法

使用extend方法也可以把一个列表拼接到另一个列表的末尾。比如:

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

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

说明一下:

  • += 和extend方法都可以将一个列表拼接到另一个列表的末尾,但是使用extend方法更高效
  • 因为 a += b 等价于 a = a + b,拼接过程中会先构造拼接后的列表,然后将a 原来的列表释放,再将这个拼接后的列表赋值给a
  • a.extend(b)是直接将b列表中的元素拼接到a列表的后面,避免了不必要的释放操作

列表常用接口汇总

列表操作

列表操作方式
子列表提取thislist [start : end : step] (左闭右开)
列表检查in 和 not in
列表拼接+ 和 +=
列表长度len()

列表的成员函数

成员函数功能
clear清空列表
copy复制列表
append在列表末尾追加一个元素
insert在列表指定位置添加元素
extend将子列表或任何可迭代的对象添加到当前列表的末尾
pop删除指定位置的元素(默认是尾元素)
remove删除指定值的元素(首次出现)
index返回指定值的元素下标(首次出现)
count返回具有指定值的元素个数
reverse反转列表中元素值的顺序
sort对列表中元素进行排序
遇见安然遇见你,不负代码不负卿。
谢谢老铁的时间,咱们下篇再见~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud Aliba-Nacos-从入门到学废【1】

&#x1f95a;今日鸡汤&#x1f95a; 当你最倒霉地时候一定要扛住。 因为&#xff0c;那正是你运气该上升的时候。 ——《一人之下》 目录 &#x1f9c8;1.Nacos介绍 &#x1f9c2;2.Nacos服务提供者注册 &#x1f953;3.Nacos服务消费者 &#x1f32d;4.Nacos作为配置中心…

双目测距工程Stereo-Vision-master学习笔记

硬件&#xff1a; 首先要要把两个摄像头固定到支架上&#xff0c;并且两个摄像头的间距应该在110mm&#xff0c;两个摄像头没有落差 相机的内参数包括焦距、主点坐标、像素尺寸等&#xff0c;这些参数决定了相机成像的几何变换关系。内参数是相机固有的属性&#xff0c;不会随…

Bean作用域及生命周期

关于Bean对象&#xff0c;在将其存储到spring中以后&#xff0c;在使用或读取该Bean对象时&#xff0c;如果该对象是公有的&#xff0c;难免就会出现被一方修改&#xff0c;从而影响另外一方读取到的对象准确性的情况。因此了解Bean的作用域和生命周期就是十分必要的了。 首先…

2024年AMC8模拟考试实测流程、注意事项和常见问题

和往年的AMC8比赛一样&#xff0c;在正式比赛的前一周左右会开放两天的模拟考试时间&#xff0c;AMC8的主办方建议所有的参赛选手重视且参加模拟考试&#xff0c;以测试设备、熟悉流程&#xff0c;避免将来正式考试不小心违规&#xff0c;或者设备不给力。 2024年的AMC8模拟考…

Matlab字符识别实验

Matlab 字符识别OCR实验 图像来源于屏幕截图&#xff0c;要求黑底白字。数据来源是任意二进制文件&#xff0c;内容以16进制打印输出&#xff0c;0-9a-f’字符被16个可打印字符替代&#xff0c;这些替代字符经过挑选&#xff0c;使其相对容易被识别。 第一步进行线分割和字符…

一个简易的PHP论坛系统

一个简易的PHP论坛系统 php课程设计&#xff0c;毕业设计 预览 技术 bootstrap 4.x jquery css php mysql 5.7 目录结构 登录 管理员 admin/123456 测试用户 user1/123456 更多文章和源码获取查看

MongoDB认证考试小题库

Free MongoDB C100DBA Exam Actual Questions 关于MongoDB C100 DBA 考试真题知识点零散整理 分片架构 应用程序 --> mongos --> 多个mongod对于应用来说&#xff0c;连接分片集群跟连接一台单机mongod服务器一样分片好处&#xff0c; 增加可用RAM、增加可用磁盘空间、…

【Spring Cloud Alibaba】Sentinel 服务熔断与流量控制

目录 前言 一、Sentinel 入门 1.1 什么是 Sentinel ? 1.2 微服务集成 Sentinel 1.3 安装Sentinel控制台 二、Jmeter 压力测试工具 2.1 Jmeter 介绍 2.2 Jmeter 安装 2.3 接口测试 三、Sentinel 使用 3.1 限流规则 3.1.1 warm up(预热模式) 3.1.2 排队等待 3.1.3…

记redis5.x在windows上搭建集群(六主六从)

六个运行端口 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 1、安装redis,文章太多不多BB 2、复制六份redis文件夹出来改名 3、修改每一份的配置文件 redis.windows.conf 修改为以下格式&#xff1a; #运行端口 port…

线性代数——(期末突击)概率统计习题(概率的性质、全概率公式)

目录 概率的性质 题一 全概率公式 题二 题三 概率的性质 有限可加性&#xff1a; 若有限个事件互不相容&#xff0c;则 单调性&#xff1a; 互补性&#xff1a; 加法公式&#xff1a; 可分性&#xff1a; 题一 在某城市中共发行三种报纸&#xff1a;甲、乙、丙。在这个…

vue3实现动态侧边菜单栏的几种方式总结

基于自建json数据的动态侧边菜单栏 后端接口json数据 src/api/menuList.js const menuList [{url: ,name: 人员管理,icon: icon-renyuan,menuId: 1,children: [{url: /user,name: 用户管理,icon: icon-jurassic_user,menuId: 1001,children: []},{url: /role,name: 角色管…

如何构建快速、准确的3D模型格式转换?Govie成功应用HOOPS Exchange解决数据转换问题

德国公司 "Govies "将三维CAD模型与互动的视觉环境和讲故事的元素相结合。 2021年5月10日&#xff0c;工程软件开发工具包的供应商Tech Soft 3D告知&#xff0c;总部位于德国的实时三维可视化专家3D Interaction Technologies&#xff08;3DIT&#xff09;正在使用H…

(Java企业 / 公司项目)分布式事务Seata详解(含Seata+Nacos组合使用)

一. Seata介绍 Seata 是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前&#xff0c;其内部版本在阿里系内部一直扮演着应用架构层数据一致性的中间件角色&#xff0c;帮助经济体平稳的度过历年的双11&…

简单高效 LaTeX 科学排版 第004集 命令与环境

这是《简单高效LaTeX》的第四个视频&#xff0c;主要演示讨论基本命令与排版环境&#xff0c;还有保留字符。 视频地址&#xff1a;https://www.ixigua.com/7298100920137548288?id7298102807985390120&logTagf853f23a668f8a2ee405

nmealib库编译提示 undefined reference to `ceil‘

一、问题描述 下载了nmealib库文件&#xff0c;默认工程进行编译&#xff0c;报错&#xff0c;提示如下&#xff1a; gcc -I include -c src/generate.c -o build/nmea_gcc/generate.o gcc -I include -c src/generator.c -o build/nmea_gcc/generator.o ar rsc lib/libnm…

机器学习数据处理

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

前端重置密码报错记录

昨天晚上&#xff0c;我写了重置密码的前端&#xff0c;测试的时候报错 今天上午&#xff0c;我继续试图解决这个问题&#xff0c;我仔细检查了一遍&#xff0c;前端没有问题 可以正常接收输入的数据并且提交 但是后端接收到的数据为空&#xff0c;后端接口也没有问题 但后端收…

Sqoop与其他数据采集工具的比较分析

比较Sqoop与其他数据采集工具是一个重要的话题&#xff0c;因为不同的工具在不同的情况下可能更适合。在本博客文章中&#xff0c;将深入比较Sqoop与其他数据采集工具&#xff0c;提供详细的示例代码和全面的内容&#xff0c;以帮助大家更好地了解它们之间的差异和优劣势。 Sq…

openssl3.2 - 官方demo学习 - cms - cms_ver.c

文章目录 openssl3.2 - 官方demo学习 - cms - cms_ver.c概述运行结果笔记END openssl3.2 - 官方demo学习 - cms - cms_ver.c 概述 CMS验签, 将单独签名和联合签名出来的签名文件都试试. 验签成功后, 将签名数据明文写入了文件供查看. 也就是说, 只有验签成功后, 才能看到签名…

解决JuPyter500:Internal Server Error问题

目录 一、问题描述 二、问题分析 三、解决方法 四、参考文章 一、问题描述 在启动Anaconda Prompt后&#xff0c;通过cd到项目文件夹启动Jupyter NoteBook点击.ipynb文件发生500报错。 二、问题分析 base环境下输入指令&#xff1a; jupyter --version 发现jupyter环境…