Python---列表和元组

news2024/9/28 11:18:11

专栏:python
个人主页:HaiFan.
专栏简介:本专栏主要更新一些python的基础知识,也会实现一些小游戏和通讯录,学时管理系统之类的,有兴趣的朋友可以关注一下。

列表和元组

  • 前言
  • 列表的的概念
  • 列表的创建
  • 访问下标
  • 切片操作
  • 遍历列表元素
  • 新增元素
  • 列表的查找和删除
  • 连接列表
  • 关于元组
  • 总结

前言


元组和列表的大部分功能都是差不多的,但是有一个功能是有非常明显的区别:列表可变,创建好了,随时可以更改,
元组不可变,创建好了,改变不了,想要改变,只能丢弃旧的,创建个新的。

在这里插入图片描述


列表的的概念

在编程中,我们经常要使用变量,来保存数据或者表示数据。
如果代码中需要表示的数据个数比较少,我们直接创建多个变量即可。

a1 = 1
a2 = 2
a3 = 3

那么,要是想表示一到100,我们要创建100个变量吗?这样也能创建,如果要创建n个数据呢?这个时候,就没有办法用创建变量的方式,来表示数据了,在这里引出新的概念–列表/元组。


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

列表的创建

创建列表主要有两种方式,一种是[]表示一个空列表,还有一种是通过list()来创建列表

a = []
b = list()

print(type(a))
print(type(b))

在这里插入图片描述


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

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

在这里插入图片描述
python中的列表,可以从放不同类型的元素,别问为啥,问就是python强大,这一点和其他语言差别较大。

a = [1,2,3,4,'hello world','haohaoxuexi']
print(a)

在这里插入图片描述

访问下标

可以通过下标访问操作符[]来获取列表中的任意元素
[]非创建列表中的[],如-1和1-2,-1的的-是负号的意思,1-2的-是减号的意思
我们把 [ ] 中填写的数字, 称为 下标 或者 索引 .

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

这个结果是1吗?
在这里插入图片描述
结果为什么会是2呢?这是因为,python中访问下标的时候,是从0开始的,0代表列表中第一个元素的位置,1代表列表中第二个元素的位置。所以上面代码的结果会是2。


通过下标还能改变列表中元素的值。

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

在这里插入图片描述
但是,访问下标的时候,下标不要超出列表的有效范围,否则会抛出异常。

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

在这里插入图片描述


使用len函数,可以获取到列表的元素个数

a = [1,2,3,4]

print(len(a))

在这里插入图片描述


python中的下标可以取负数,表示倒数第几个元素

a = [1,2,3,4]

print(a[-1])

在这里插入图片描述
其实a[-1]等价于a[len(a) - 1]所以访问元素是倒着数的。

切片操作

通过下标操作是依次取出里面的第一个元素。
通过切片,则是一次取出一组连续的元素,相当于得到一个子列表


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

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

在这里插入图片描述
a中的[1:3]表示的是[1,3)这样由下标构成的前闭后开区间,也就是下标为1的元素开始(2),到下标为3的元素结束(4),但是不包含下标为3的元素。


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

a = [1,2,3,4]
print(f'不省略边界a = {a[1:3]}')
print(f'省略前边界a = {a[:3]}')
print(f'省略后边界a = {a[1:]}')
print(f'省略两个边界a = {a[:]}')

在这里插入图片描述
前后边界可以用负数表示吗?当然可以。

a = [1,2,3,4]
print(f'不省略边界a = {a[1:-2]}')
print(f'省略前边界a = {a[:-2]}')
print(f'省略后边界a = {a[1:]}')
print(f'省略两个边界a = {a[:]}')

在这里插入图片描述

省略后边界:从开始位置,一直取到整个列表结束
省略前边界:从列表的起始元素,一直取到结束的后边界,但是不访问下标为后边界的那一个元素
省略前后边界:取出整个列表,从起始位置到结束位置。


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

a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
print(f'步长为1{a[::1]}')
print(f'步长为2{a[::2]}')
print(f'步长为3{a[::3]}')
print(f'步长为4{a[::4]}')
print(f'步长为5{a[::5]}')

在这里插入图片描述
这个步长跟for循环里的range类似


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

a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
print(f'步长为-1{a[::-1]}')
print(f'步长为-2{a[::-2]}')
print(f'步长为-3{a[::-3]}')
print(f'步长为-4{a[::-4]}')
print(f'步长为-5{a[::-5]}')

在这里插入图片描述


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

a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
print(a[100:2000])

在这里插入图片描述


元组和列表的这些操作都是一样的。

遍历列表元素

遍历指把元素一个一个的取出来,一般会搭配着循环使用。在以后做题的时候,会经常用到遍历。

a = [1,2,3,4,5,6]
for cnt in a:
    print(cnt)

在这里插入图片描述
循环中的代码,不要求必须是打印,也可以是其他操作。


也可以使用循环按照范围生成下标,利用下标来访问元素

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

for cnt in range(0,len(a)):
    print(a[cnt])

在这里插入图片描述


while循环也是可以的打印列表元素的

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

在这里插入图片描述

新增元素

使用append方法,向列表末尾插入一个元素(尾插)

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

a.append("新年快乐")

print(a[-1])

在这里插入图片描述


使用insert方法,向任意位置插入一个元素

insert第一个参数表示要插入元素的下标

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

a.append("新年快乐")

a.insert(2,"新的一年也要努力学习啊")

print(a[2])

在这里插入图片描述

什么是方法,
方法其实就是函数,只不过函数是独立存在的,而方法往往是要依附于某个对象,像上述代码,a.insert里的insert就是依附于a的,相当于是针对a这个列表,进行插入操作。

列表的查找和删除

使用in操作符,判定元素是否存在列表中,返回值是布尔类型

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

print(1 in a)
print(666 in a)

在这里插入图片描述


使用index方法,查找元素在列表中的下标,返回值是一个整数,如果元素不存在,则会抛出异常

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

print(a.index(1))
print(a.index(100))

在这里插入图片描述


删除元素

使用pop方法删除最末尾的元素

a = [1,2,3,4,5,6]
print(len(a))
print(a[-1])
a.pop()
print(len(a))
print(a[-1])

在这里插入图片描述


pop也能按照下标来删除元素

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

print(a[2])

a.pop(2)

print(a[2])

在这里插入图片描述


使用remove方法,按照值删除元素

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

print(a[2])

a.remove(3)

print(a[2])

在这里插入图片描述

连接列表

使用+能够把两个列表拼接在一起

此处的+的结果是会生成一个新的列表,而不会影响到旧列表的内容

a = [1,2,3,4,5,6]
b = [7,8,9]

c = a + b
print(c)

在这里插入图片描述


使用extend方法,相当于把一个列表拼接到另一个列表的后面。

a.extend(b)是把b的内容拼接到a的末尾,不会修改b,但是会修改a

a = [1,2,3,4,5,6]
b = [7,8,9]

a.extend(b)

print(a)
print(b)

在这里插入图片描述

关于元组

元组和列表的功能基本是一致的。
元组使用()来表示

a = ()
b = tuple()
print(type(a))
print(type(b))

在这里插入图片描述
元组不能修改里面的元素,列表可以修改
像一些遍历,切片,遍历,in,index,+,等,元组一样支持。
但是像修改元素的操作,删除元素,entend等,元组不支持。

另外,元组在python中i,很多时候是默认的集合类型,如,当一个函数有多个返回值的时候。

def swap():
    return 10,11

ret = swap()
print(type(ret))

在这里插入图片描述
这里的ret的类型,是元组。

总结

元组和列表,就介绍到这里,
在需要多个元素的时候,可以考虑使用列表或者元组。
如果元素需要改变就先考虑用列表
如果元素不需要改变就先考虑用元组


最后祝大家新年快乐!!!!

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

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

相关文章

【微服务】Eureka注册中心

本系列介绍的是Spring Cloud中涉及的知识点&#xff0c;如有错误欢迎指出~ 一.引子 假如我们的服务提供者user-service部署了多个实例&#xff0c;如图&#xff1a; 大家思考几个问题&#xff1a; 问题一&#xff1a;order-service在发起远程调用的时候&#xff0c;该如何得知…

Linux——一文彻底了解进程id和线程id的关系(什么是pid、tgid、lwp、pthread_t)

目录 一.内核层面&#xff1a;pid & tgid 二.函数调用层面&#xff1a;getpid & gettid & pthread_self 三.用户层面&#xff1a;PID & LWP&#xff08;TID&#xff09; 四.总结 一.内核层面&#xff1a;pid & tgid 首先&#xff0c;我们要清楚&#…

【运筹优化】凸多面体重叠判断算法:GJK 算法详解 C++代码实现二维情形的凸多边形重叠判断

文章目录一、GJK 算法简介二、前置知识2.1 二维向量的点乘和叉乘2.2 三维向量叉乘2.3 凸多边形2.4 闵可夫斯基差2.5 单纯形2.6 Support 函数三、GJK 算法讲解3.1 熟悉 GJK 算法流程3.1.1 多边形重叠的情形3.1.2 多边形不重叠的情形3.2 总结 GJK 算法步骤3.3 讲解 GJK 算法细节3…

HTML5(下)

目录 表格标签 表格的主要作用 表头单元格标签 表格结构标签 合并单元格 列表标签 无序列表 有序列表 自定义列表 表单 表单域 表单控件&#xff08;表单元素&#xff09; 表单元素 label标签 select下拉列表 textarea文本域元素 案例-注册页面 表格标签 表格的主…

面试官: 你们生产环境的JVM怎么设置的?

前言 这篇文章&#xff0c;给大家聊一个生产环境的实践经验&#xff1a;线上系统部署的时候&#xff0c;JVM堆内存大小是越大越好吗&#xff1f; 先说明白一个前提&#xff0c;本文主要讨论的是Kafka和Elasticsearch两种分布式系统的线上部署情况&#xff0c;不是普通的Java应…

【附代码】十大经典排序算法

常见的内部排序算法有&#xff1a;插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括&#xff1a;名词解释&#xff1a;n&#xff1a;数据规模。k&#xff1a;“桶”的个数。In-place&#xff1a;占用常数内存&#xff0c;不占用…

TryHackMe-Docker_Rodeo

The Docker Rodeo 在此引导式展示中了解各种 Docker 漏洞。 以下内容均来自TryHackMe 前提设置 /etc/docker/daemon.json {"insecure-registries" : ["docker-rodeo.thm:5000","docker-rodeo.thm:7000"] }Docker注册表 在我们开始利用 Docke…

【Java开发】Spring Cloud 05 :远程服务调用Openfeign 替代 WebClient

在前边章节中&#xff0c;我们借助 Nacos 的服务发现能力&#xff0c;使用 WebClient 实现了服务间调用。从功能层面上来讲&#xff0c;我们已经完美地实现了微服务架构下的远程服务调用&#xff0c;但是从易用性的角度来看&#xff0c;这种实现方式似乎对开发人员并不怎么友好…

软件测试复习10:测试文档

专栏&#xff1a;《软件测试》 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 测试大纲&#xff1a;招标用&#xff0c;总体策略&#xff0c;对软件的了解&#xff0c;测试人员&#xff0c;资质等。 测试计划&#…

将Bean创建到Spring容器,从Spring容器拿出Bean

目录一、XML文件中&#xff0c;将Bean创建到Spring容器1. 基本类型注册2. 类装配3. 有参构造方法装配4. 扩展注入5. Bean的作用域6. Bean的其他配置二、配置类中&#xff0c;将Bean创建到Spring容器1. 在mapper、service、controller中创建&#xff0c;等着被componentScan扫描…

C++ | 关于STL中的空间配置器 | 源码剖析

文章目录为什么需要空间配置器一级空间配置器二级空间配置器内存池解析refill 填充内存池chunk_alloc 申请堆空间deallocate 资源的归还空间配置器的再次封装空间配置器与容器的结合我们知道在C和C中都有关于内存管理的问题&#xff0c;C语言用malloc和free这两个函数体现内存管…

ClassLoader-在spring中的应用

背景标题起的挺大&#xff0c;忽悠人的。其实是我跟着视频学习手写模拟spring底层原理中遇到的问题&#xff0c;关于classLoader的几行代码&#xff0c;不知道是什么意思&#xff0c;所以特地来记下笔记。关于ClassLoader我好像在遥远的几年前看深入理解虚拟机时看到过&#xf…

Datawhale 202301 设计模式 | 第二章 人工智能 现代方法 智能体

智能体和环境 理性智能体 (rational agent) 需要为取得最佳结果或在存在不确定性时取得最佳期望结果而采取行动。 任何通过传感器(sensor) 感知 环境(environment) 并通过 执行器(actuator) 作用于该环境 的事物都可以被视为 智能体(agent) 。 行为 理性智能体 (rational ag…

Linux常用命令——systemctl命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) systemctl 系统服务管理器指令 补充说明 systemctl命令是系统服务管理器指令&#xff0c;它实际上将 service 和 chkconfig 这两个命令组合到一起。 任务旧指令新指令使某服务自动启动chkconfig --level 3 ht…

属性值的计算过程 css样式显示的计算过程 页面的渲染流程

目录属性值的计算过程属性值计算过程简介通过例子来理解&#xff1a;详细解释&#xff1a;方法例子属性值的计算过程 一个元素一个元素依次渲染&#xff0c;顺序按照页面文档的树形目录结构进行 渲染每个元素的前提条件&#xff1a;该元素的所有CSS属性必须有值 一个元素&am…

数学魔法结局:muldiv

介绍了一些棘手的数学魔法&#xff0c;但我一直没有抽出时间说出妙语。目标是计算 同时正确处理溢出。我们的秘密武器是 EVM 的mulmod指令。这条指令完全符合我们的要求&#xff0c;只是它返回的是余数而不是商。那么我们的策略是什么&#xff1f; 计算 512 位乘积一种⋅b使用…

【数据结构】6.5 图的遍历

文章目录遍历定义深度优先搜索(DFS)算法步骤邻接矩阵上的遍历邻接矩阵深度优先算法DFS算法效率分析广度优先搜索(BFS)邻接表的广度优先算法BFS算法效率分析DFS与BFS算法效率比较遍历定义 和树的遍历类似&#xff0c;图的遍历也是从图中的某一个顶点出发&#xff0c;按照某种方法…

UPS BP650CH实现nas自动关机

家里有个自己拼凑的nas需要防止断电不正常关机&#xff0c;因此购买了施耐德后背式BP650CH&#xff0c;之所以选这款是因为带了串口&#xff0c;串口终究还是很方便的东西。不管linux还是window还是其他系统都能够使用&#xff0c;通过串口直接获得ups的信息&#xff0c;就不需…

JDBC Maven MyBatis

文章目录JDBC&#xff08;Java Database Connectivity&#xff09;入门API详解DriverManger&#xff08;驱动管理类&#xff09;Connection(数据库连接对象)作用StatementResultSet&#xff08;结果集对象&#xff09;PreparedStatement连接池MavenMaven模型Maven 常用命令依赖…

简单二叉树的介绍

1.树的结构&#xff08;了解&#xff09;1.1概念树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0)个有限节点总成一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂的树&#xff0c;也就是说它的根是朝上&#xff0c;而叶子是朝下的&#xff08;本人…