列表和元组(上)——“Python”

news2024/12/25 22:26:53

各位CSDN的uu们你们好呀,今天小雅兰的内容是Python中的列表,下面,让我们进入列表的世界吧


列表是什么, 元组是什么

创建列表

访问下标

切片操作

遍历列表元素


列表是什么, 元组是什么

编程中, 经常需要使用变量, 来保存/表示数据.

如果代码中需要表示的数据个数比较少, 我们直接创建多个变量即可.

num1 = 10

num2 = 20

num3 = 30

#......

但是有的时候, 代码中需要表示的数据特别多, 甚至也不知道要表示多少个数据. 这个时候, 就需要用到列表.

列表是一种让程序猿在代码中批量表示/保存数据的方式

就像我们去超市买辣条, 如果就只是买一两根辣条, 那咱们直接拿着辣条就走了.

但是如果一次买个十根八根的, 这个时候用手拿就不好拿, 超市老板就会给我们个袋子.

这个袋子, 就相当于 列表

袋子中的辣条,就是我们要表示的数据

元组和列表相比, 是非常相似的, 只是列表中放哪些元素可以修改调整, 元组中放的元素是创建元组的时候就设定好的, 不能修改调整.

列表就是买散装辣条, 装好了袋子之后, 随时可以把袋子打开, 再往里多加辣条或者拿出去一些辣条.

元组就是买包装辣条, 厂家生产好了辣条之后, 一包就是固定的这么多, 不能变动了.

 


 创建列表

创建列表主要有两种方式.

  • 直接使用字面值创建,[ ]就表示一个空的列表
  • 使用list()来创建
a=[]
print(type(a))

b=list()
print(type(b))

如果需要往里面设置初始值, 可以直接写在 [ ] 当中.

元素之间使用 ,来分割

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

列表中存放的元素允许是不同的类型. (这一点和 C++ Java 差别较大).

a = [1, 'hello', True,[4,5,6]]
print(a)

因为 list 本身是 Python 中的内建函数, 不宜再使用 list 作为变量名。


访问下标

可以通过下标访问操作符 [ ] 来获取到列表中的任意元素.

 我们把 [ ] 中填写的数字, 称为 下标 或者 索引 .

 

alist = [1, 2, 3, 4]
print(alist[2])

注意: 下标是从 0 开始计数的, 因此下标为 2 , 则对应着 3 这个元素.  

通过下标不光能读取元素内容, 还能修改元素的值.

alist = [1, 2, 3, 4]
alist[2] = 100
print(alist)

如果下标超出列表的有效范围, 会抛出异常.

alist = [1, 2, 3, 4]
print(alist[100])

因为下标是从 0 开始的, 因此下标的有效范围是 [0, 列表长度 - 1]. 使用 len 函数可以获取到列表的元素个数.

alist = [1, 2, 3, 4]
print(len(alist))

 下标可以取负数. 表示 "倒数第几个元素"

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

 alist[-1] 相当于 alist[len(alist) - 1]


切片操作

通过下标操作是一次取出里面第一个元素.

通过切片, 则是一次取出一组连续的元素, 相当于得到一个子列表

使用 [ : ] 的方式进行切片操作.

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

 

alist[1:3] 中的 1:3 表示的是 [1, 3) 这样的由下标构成的前闭后开区间.

也就是从下标为 1 的元素开始(2), 到下标为 3 的元素结束(4), 但是不包含下标为 3 的元素.

所以最终结果只有 2, 3

  

切片操作中可以省略前后边界

alist = [1, 2, 3, 4]

print(alist[1:])  # 省略后边界, 表示获取到列表末尾

print(alist[:2])  # 省略前边界, 表示从列表开头获取

print(alist[:-1]) # 此处切片中的下标也可以写成负数

print(alist[:])   # 省略两个边界, 表示获取到整个列表.

切片操作还可以指定 "步长" , 也就是 "每访问一个元素后, 下标自增几步"

alist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(alist[::1])
print(alist[::2])
print(alist[::3])
print(alist[::5])

切片操作指定的步长还可以是负数, 此时是从后往前进行取元素. 表示 "每访问一个元素之后, 下标自减几步"

alist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(alist[::-1])
print(alist[::-2])
print(alist[::-3])
print(alist[::-5])

如果切片中填写的数字越界了, 不会有负面效果. 只会尽可能的把满足条件的元素获取到.

alist = [1, 2, 3, 4]
print(alist[100:200])

 


 遍历列表元素

"遍历" 指的是把元素一个一个的取出来, 再分别进行处理.

最简单的办法就是使用 for 循环

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

 

 

也可以使用 for 按照范围生成下标, 按下标访问

alist = [1, 2, 3, 4]
for i in range(0, len(alist)):
  print(alist[i])

 也可以修改列表的值:

alist = [1, 2, 3, 4, 5 ]
for i in range(0, len(alist)):
  alist[i]=alist[i]+10
print(alist)

 

 还可以使用 while 循环. 手动控制下标的变化

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

 


好啦,小雅兰今天的学习内容就到这里啦,还要继续加油噢!!!

 

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

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

相关文章

Swift 注释和文档

今天&#xff0c;我知道我写是什么&#xff0c;上帝和我知道 明天&#xff0c;我知道这个代码什么意思&#xff0c; 后天&#xff0c;我知道这是我写的代码&#xff0c; 一周后&#xff0c;这TM谁写的代码&#xff0c;此时只有上帝才知道啥意思 论代码注释的重要性。 普通…

React Native 混合ios android开发 及常用框架

英文文档&#xff1a;Setting up the development environment React Native 中文文档&#xff1a;集成到现有原生应用 React Native 中文网 ios 在集成过程中&#xff0c;需要修改package.json 和 Podfile&#xff0c;按文档中的内容&#xff0c;如果pod install过不了的…

用Kotlin 一步步抄作业写一个Redux

前言 我抄的作业 完全理解 redux&#xff08;从零实现一个 redux&#xff09; Issue #22 brickspert/blog GitHub 一.架构设计模式 1. mvc>mvp>mvvm->mvi 2.Redux实现类Mvi Android Mvi 与Redux对比&#xff0c;思想一致&#xff0c;单向数据流&#xff0c;单…

最优控制 3:最优控制理论中的极小值原理与动态规划

最优控制 3&#xff1a;使用极小值原理求解最优控制问题 引言极小值原理 t f t_f tf​ 固定的情况 t f t_f tf​ 自由的情况 动态规划连续系统 HJB 方程的推导 引言 经典变分法是一种特别强大的工具&#xff0c;但是它要求控制量必须可导且无界&#xff0c;这在很多问题中都是…

pandas读取列数不同的CSV文件

使用pandas读取每行不同列的CSV文件 对于序列模型而言&#xff0c;每条数据的大小都不一定相等&#xff0c;但对于一般的神经网络要求输入大小相等。目前的一种方法是选取当前数据集中最大长度的数据作为基准数据大小&#xff0c;其余的数据末尾补零来规范整个数据集每条数据的…

计算机:理解操作系统:内存篇(下)

内存 1. 指针与引用2. 进程的内存模型3. 幻象大师---操作系统4. 总结 本篇是 关于计算机内存最后一篇文章 什么是内存 C/C内存模型 堆区与栈区的本质 Java、Python等内存模型 Java内存模型 Jave中的堆区与栈区是如何实现的 Python内存模型 指针与引用 进程的内存模型 幻想大师-…

css tooltip (web.dev)

目录 版权介绍tool-tip在上居中动画效果宽度边界 tool-tip::after范围锥形渐变-webkit-mask尖角怎么来的? 附录完整代码 版权 本文为原创, 遵循 CC 4.0 BY-SA 版权协议, 转载需注明出处: https://blog.csdn.net/big_cheng/article/details/130262213. 介绍 https://web.dev…

【周末闲谈】AI作图,你真的了解它吗?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言&#xff0c;模仿还是超越&#xff1f; ✨第二周 畅想AR 文章目录 系列目录前言AI绘画&#x1f916;&#x1f916;&#x1f916;工作…

[C++]:万字超详细讲解多态以及多态的实现原理(面试的必考的c++考点)

文章目录 前言一、多态的定义及实现1.多态的构成条件2.c11的override和final3.重载&#xff0c;重写&#xff0c;重定义的比较4.抽象类5.多态的原理6.多继承中的虚函数表7.动态绑定和静态绑定总结 前言 多态的概念&#xff1a; 多态的概念&#xff1a;通俗来说&#xff0c;就是…

【Linux】使用systemd设置开机自启动命令

目录 1 使用使用systemd实现开机自动运行命令1.1 新建一个.service文件1.2 编写.service文件1.2.1 [Unit]1.2.2 [Service]1.2.3 [Install] 1.3 启动服务并设置自启动 2 编写Systemd服务文件的要点2.1 Systemd服务文件的位置2.2 Systemd服务文件的格式2.3 Systemd服务文件的基本…

【基础】Kafka -- 基础架构及核心概念

Kafka -- 基础架构及核心概念 初识 KafkaKafka 基本架构Kafka 主题与分区主题与分区分区副本机制 Replica高水位 HW 生产者生产者客户端必要的参数配置消息的发送序列化分区器生产者拦截器 原理分析重要的生产者参数 消费者消费者与消费者组消费者客户端必要的参数配置订阅主题…

MySQL 按关键字进行截取

一、问题背景 取MySQL数据表中某个字段中的IP信息。 如&#xff1a;t_log 表中的 user_ip 字段值为 {“username”:“miracle”,“ip”:“110.230.128.186”}&#xff0c;取出IP信息 110.230.128.186。 建表和初始化SQL语句&#xff0c;如下&#xff1a; SET NAMES utf8mb4…

GORM操作mysql数据库

对象就是程序的数据结构&#xff0c;关系是数据库。就是将程序的数据结构与数据库表对应起来。 在GORM是Go语言的ORM框架&#xff0c;将go的数据结构转化为数据库表&#xff0c;例如将结构体转化为数据库表。 引入gorm框架 远程下载gorm框架 go get -u gorm.io/driver/mysq…

HTTP中的Content-type详解

Content-Type Content-Type&#xff08;MediaType&#xff09;&#xff0c;即是Internet Media Type&#xff0c;互联网媒体类型&#xff0c;也叫做MIME类型。在互联网中有成百上千中不同的数据类型&#xff0c;HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签&#x…

关于java.io的学习记录(写入文本)

可以通过字节流&#xff08;FileOutputStream&#xff09;、字符流&#xff08;OutputStreamWriter&#xff09;、字符缓冲流&#xff08;BufferedWriter&#xff09;读取文本中的数据。 FileOutputStream写入文本 public void write(){String path "writeTest.txt"…

【是C++,不是C艹】 什么是C++ | C++从哪来 | 学习建议

&#x1f49e;&#x1f49e;欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e; &#x1f449;专栏&#xff1a;《是C&#xff0c;不是C艹》&#x1f448; 前言&#xff1a; 我知道你急着学C&#xff0c;但你先别急&#xff0c;薛之谦认识认识C还是很有必要的。本期跟大家聊…

文件夹改名,如何在改名之后批量复制文件夹名称

在日常时候中会遇到给文件夹改名的时候&#xff0c;那么我们又如何在改名之后批量复制文件夹名称&#xff1f;今天就由小编来给大家分享一下操作办法。 首先第一步&#xff0c;我们要进入文件批量改名高手&#xff0c;并在板块栏里选择“文件夹批量改名”板块。 第二步&#xf…

SpringBoot 接入chatGPT API

SpringBoot 接入chatGPT API 一、准备工作二、补全接口示例三、申请API-KEY**四、JavaScript调用API**五、SpringBoot整合ChatGPT六、使用curl模拟请求ChatGPT平台已经为技术提供了一个入口了,作为一个Java程序员,我们第一时间想到的就是快速开发一个应用,接入ChatGPT的接口…

第十四天本地锁、Redis分布锁、Redisson锁三者的区别

一、为什么要有redis分布式锁&#xff0c;它解决了什么问题&#xff1f; 在传统单体架构的项目下&#xff0c;使用本地锁synchronized和lock锁就可以锁住当前进程&#xff0c;保证线程的安全性&#xff0c;但是本地锁解决不了分布式环境下多个服务资源共享的问题&#xff0c;而…

产品研发流程管理

先看一张图&#xff0c;该图适应绝大部分的产品的 研发流程 &#xff08;需要的可以去下 产品研发流程| ProcessOn免费在线作图,在线流程图,在线思维导图&#xff09; 该图详细描述了&#xff0c;不同阶段应该做什么&#xff0c;具体的来说&#xff0c;是确定了什么时候 “开会…