如何系统得自学python?——7.列表与元组

列表

一、列表的应⽤场景

列表是Python中最常用的数据结构之一,用于存储一组有序的数据。它在各种场景中都有广泛的应用,例如:

  1. 存储多个相同类型的数据,如学生成绩、员工工资等。
  2. 存储不同类型的数据,如图书信息(包含书名、作者、出版社等)。
  3. 在算法中作为临时存储数据的容器,如排序算法中的中间过程。
  4. 表示游戏中的角色、物品等。
  5. 存储数据库查询结果等。

 二、列表的格式

列表使用方括号 [] 来定义,其中的元素通过逗号 , 分隔。

列表可以⼀次性存储多个数据,且可以为不同数据类型。

例如:

scores = [90, 85, 95, 88, 92]
books = ['Python Crash Course', 'Deep Learning', 'Introduction to Algorithms']
i = [1,2,3,4,"张三","李四"]

三、列表的常⽤操作

列表的作⽤是⼀次性存储多个数据,程序员可以对这些数据进⾏的操作有:增、删、改、查。

包括:

  • 索引和切片:通过索引访问列表中的元素,也可以使用切片来获取子列表。
  • 添加元素:使用 append() 方法在列表末尾添加元素,使用 insert() 方法在指定位置插入元素。
  • 删除元素:使用 del 关键字、pop() 方法或 remove() 方法删除列表中的元素。
  • 修改元素:直接通过索引赋值来修改列表中的元素。
  • 连接列表:使用 + 运算符将两个列表连接起来。
  • 列表长度:使用 len() 函数获取列表的长度。

1.查找

#### 根据下标查找


name_list = ['张三', '李四', '王五','赵六']
print(name_list[0])
print(name_list[1])
print(name_list[2])

2.函数

index():返回指定数据所在位置的下标 。

语法:列表序列.index(数据, 开始位置下标, 结束位置下标)

name_list = ['张三', '李四', '王五','赵六']
print(name_list.index('张三', 0, 2))

注意:如果查找的数据不存在则报错。

count():统计指定数据在当前列表中出现的次数。

name_list = ['张三', '李四', '王五','张三']
print(name_list.count('张三'))

len():访问列表⻓度,即列表中数据的个数。

name_list = ['张三', '李四', '王五','赵六']
print(len(name_list))

in与not in

in:判断指定数据在某个列表序列,如果在返回True,否则返回False
not in:判断指定数据不在某个列表序列,如果不在返回True,否则返回False

name_list = ['张三', '李四', '王五','赵六']
name = input('请输⼊您要搜索的名字:')
if name in name_list:
    print(f'您输⼊的名字是{name}, 名字已经存在')
else:
    print(f'您输⼊的名字是{name}, 名字不存在')
 

·增加

append():列表结尾追加数据。

语法:列表序列.append(数据)

name_list = ['张三', '李四', '王五','赵六']
name_list.append('阿坤')
print(name_list)

如果append()追加的数据是⼀个序列,则追加整个序列到列表

name_list = ['张三', '李四', '王五','赵六']
alist = ["唱","跳","rap","篮球"]
name_list.append(alist)
print(name_list)


# ['张三', '李四', '王五', '赵六', ['唱', '跳', 'rap', '篮球']]

extend():列表结尾追加数据,如果数据是⼀个序列,则将这个序列的数据逐⼀添加到列表。

name_list = ['张三', '李四', '王五','赵六']
name_list.extend('阿坤')
print(name_list)


# ['张三', '李四', '王五', '赵六', '阿', '坤']

如果添加一个序列,则会将序列里面每一个元素添加进去

name_list = ['张三', '李四', '王五','赵六']
alist = ["唱","跳","rap","篮球"]
name_list.extend(alist)
print(name_list)

insert():指定位置新增数据。

语法:列表序列.insert(位置下标, 数据)

name_list = ['张三', '李四', '王五','赵六']
name_list.insert(1, '阿坤')


# 结果:['张三','阿坤', '李四', '王五','赵六']
print(name_list)

·删除

del:删除整个列表

name_list = ['张三', '李四', '王五','赵六']
del name_list
print(name_list)

删除指定数据(根据索引删除)

name_list = ['张三', '李四', '王五','赵六']
del name_list[1]
print(name_list)


# ['张三', '王五', '赵六']

pop():删除指定下标的数据(默认为最后⼀个),并返回该数据。

name_list = ['张三', '李四', '王五','赵六']
name_list.pop(1)
print(name_list)


# ['张三', '王五', '赵六']

remove():移除列表中某个数据的第⼀个匹配项。

语法:列表序列.remove(数据)

name_list = ['张三', '李四', '王五','赵六']
name_list.remove("张三")
print(name_list)


# ['李四', '王五', '赵六']

clear():清空列表

name_list = ['张三', '李四', '王五','赵六']
name_list.clear()
print(name_list)


# []

·修改

直接修改

name_list = ['张三', '李四', '王五','赵六']
name_list[0] = '阿坤'
print(name_list)

reverse():逆置

num_list = [1, 5, 2, 3, 6, 8]
num_list.reverse()
print(num_list)


# [8, 6, 3, 2, 5, 1]

sort():排序

语法:reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)。

样式:列表序列.sort(reverse=False)


li = [2,3,5,6,1,4,8]
li.sort(reverse=False)
print(li)
# [1, 2, 3, 4, 5, 6, 8]

li.sort(reverse=True)
print(li)
# [8, 6, 5, 4, 3, 2, 1]

复制

copy():复制一个列表

name_list = ['张三', '李四', '王五','赵六']
name_li2 = name_list.copy()
print(name_li2)


# ['张三', '李四', '王五','赵六']

四、列表的循环遍历

for循环

name_list = ['张三', '李四', '王五','赵六']
for i in name_list:
    print(i)

 while循环

i = 0
name_list = ['Tom', 'Lily', 'Rose']
while i < len(name_list):
    print(name_list[i])
    i += 1

五、列表的嵌套

所谓列表嵌套指的就是⼀个列表⾥⾯包含了其他的⼦列表

# 找到篮球
name_list = [['张三', '李四', '阿坤'], ['唱', '跳', '篮球'], ['甲', '乙', '丙']]
# 第⼀步:按下标查找到篮球所在的列表
print(name_list[1])
# 第⼆步:从李四所在的列表⾥⾯,再按下标找到数据李四
print(name_list[1][2])

列表中的元素可以是任何数据类型,包括另一个列表。这种嵌套的列表可以用来表示二维数据结构,如矩阵、多维数组等。

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
    for element in row:
        print(element)
 

元组

元组是Python中的不可变序列,用于存储一组有序的数据。

一、元组的应用场景

由于其不可变性质,元组在某些场景下更适合用于存储不可变的数据,如下所示:

  1. 表示不可变的数据集合: 例如表示日期、时间、坐标等,这些数据一旦确定就不会改变。
  2. 作为函数返回值: 可以将多个值打包成元组作为函数的返回值,方便返回多个相关联的值。
  3. 在映射中作为键: 由于元组是不可变的,因此可以作为字典的键使用,而列表则不能。

二、定义元组

定义元组使⽤⼩括号,且逗号隔开各个数据,数据可以是不同的数据类型。

# 多个数据元组
t1 = (10, 20, 30)

# 单个数据元组
t2 = (10,)

注意:如果定义的元组只有⼀个数据,那么这个数据后⾯也好添加逗号,否则数据类型为唯⼀的这个数据的数据类型。

三、元组的常⻅操作

元组数据不⽀持修改,只⽀持查找。

根据下标查找

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1[0])

index():查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index⽅法相同。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.index('aa'))

count():统计某个数据在当前元组出现的次数。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.count('bb'))

len():统计元组中数据的个数。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(len(tuple1))

注意:

元组的不可变性质意味着一旦创建就无法修改其内容,但可以创建包含可变对象(如列表)的元组,从而间接地修改元组的内容。

tuple2 = (10, 20, ['aa', 'bb', 'cc'], 50, 30)
print(tuple2[2]) # 访问到列表
# ['aa', 'bb', 'cc']


tuple2[2][0] = 'aaaaa'
print(tuple2)
# (10, 20, ['aaaaa', 'bb', 'cc'], 50, 30)

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

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

相关文章

Channel 结合 Select 使用

在Go语言中&#xff0c;channel和select结合使用是一种强大的并发模式。channel允许在不同的goroutine之间安全地传递消息&#xff0c;而select使得goroutine可以同时等待多个通信操作&#xff08;channel操作&#xff09;。 select语句等待多个channel操作中的任意一个完成。…

《VulnHub》Lampião:1

title: 《VulnHub》Lampio&#xff1a;1 date: 2024-03-28 21:37:49 updated: 2024-03-28 21:37:50 categories: WriteUp&#xff1a;Cyber-Range excerpt: 关键技术&#xff1a;主机发现&#xff0c;端口扫描、服务探测、操作系统探测&#xff0c;对开放的端口探测漏洞&#x…

寒冬继续!飞书发全员信 “适当精简团队规模”

多精彩内容在公众号。 3月26日飞书CEO谢欣发布全员信&#xff0c;宣布进行组织调整&#xff0c;同时为受到影响的“同学”提供补偿方案和转岗机会。 在致员工的一封信中&#xff0c;谢欣坦诚地指出&#xff0c;尽管飞书的团队人数众多&#xff0c;但组织结构的不够紧凑导致了工…

fastadmin学习05-开启debug以及配置

FastAdmin 框架提供了对 .env 环境变量配置的支持&#xff0c;并附带一个默认示例文件 .env.sample。在安装后&#xff0c;框架并不会自动启用 env 环境变量&#xff0c;需要手动将 .env.sample 复制为 .env 并进行配置。 如果不开启.env会读取database.php中的配置 下面测试…

redis缓存穿透、缓存击穿、缓存雪崩及其解决方法

缓存穿透、缓存击穿、缓存雪崩是redis的三大问题。 在介绍这三大问题之前&#xff0c;我们需要先了解Redis作为一个缓存中间件&#xff0c;在项目中是如何工作的。首先看一下在没有缓存中间件的时候的系统数据访问的架构图&#xff1a; 客户端发起一个查询请求的时候&#xff…

Maya 2024 for Mac/Win:重塑三维创意世界的利器

在数字化浪潮汹涌的当下&#xff0c;三维图形软件早已成为创意产业不可或缺的重要工具。而在这其中&#xff0c;Maya 2024以其卓越的性能和丰富的功能&#xff0c;赢得了无数设计师的青睐。无论是Mac还是Win平台&#xff0c;Maya 2024都能为您的三维创作提供强大的支持。 Maya…

【ssh免密设置】

本机远程的服务器上执行&#xff1a; ssh-keygen -t rsa2.然后修改公钥的权限&#xff08;xxxxx.pub需要替换&#xff09; chmod 600 xxxxx.pub3.再执行命令&#xff0c;将公钥导到免密的服务器上&#xff08;服务器ip地址替换成自己的&#xff09; ssh-copy-id root服务器i…

算法系列--动态规划--背包问题(2)--01背包拓展题目

&#x1f495;"2024.3.28小米汽车发布"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–动态规划–背包问题(2)–01背包拓展题目 大家好,今天为大家带来的是算法系列--动态规划--背包问题(2)--01背包拓展题目 1.分割等和⼦集 链接: https:/…

史上最全-Java面试题(涵盖基础、高级、框架、微服务、中间件、大厂真题等28个大类超3000+面试题,全部附带详细答案)

3月4月又到了一年一度的跳槽黄金期,无论几年经验,也无论技术能力如何,跳槽前都离不开面试准备,其中刷面试题是重中之重。 刷面试题的时候一大痛点就是太分散了,需要自己根据知识点一项一项的去搜,容易遗漏知识点而且面试题质量无法保证,非常痛苦,基于此我花了两个月的…

微信小程序修改checkbox和radio的样式

我们在开发小程序的时候&#xff0c;有时候需要修改小程序中checkbox和radio的原生样式&#xff0c;如何修改呢&#xff1f;这里给大家提供了一份代码&#xff0c;大家可以试试。 首先是修改checkbox样式的代码&#xff1a; /* 重写 checkbox 样式 */ /* 未选中的 背景样式 *…

AMS概念以及面试相关整理

1、ActivityManagerService是什么&#xff1f;什么时候初始化的&#xff1f;有什么作用&#xff1f; ActivityManagerService&#xff08;AMS&#xff09;是什么&#xff1f; ActivityManagerService&#xff08;简称AMS&#xff09;是Android操作系统中的一个核心服务&#…

实现简易的 axios

1、实现逻辑 Promise XMLHttpRequest 封装 ① 返回一个 promise 实例 new XMLHttpRequest 并设置默认请求方式、请求根路径&#xff1b; 添加请求响应事件&#xff1b; 根据状态码&#xff0c;对应执行成功或者失败的调用函数&#xff0c;并把结果传进去&#xff1b; ② …

场内基金的折溢价

场内基金会出现折溢价&#xff0c;主要原因是场内基金有申购赎回&#xff0c;买入卖出这两套操作。 交易价格<基金净值&#xff0c;就是折价 交易价格>基金净值&#xff0c;就是溢价 如何判断场内基金的折溢价 ETF最好判断&#xff0c;有实时净值IOPV&#xff0c;交易价…

AOP切入点表达式基本格式

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 官方地址 https://docs.spring.io/spring-framework/reference/core/aop/ataspectj/pointcuts.html AOP切入点表达式基本格式如下&#xff1a; execution(modifiers-patte…

java针对:Sharing is only supported问题解决

#错误解决 当你运行出现报错&#xff1a;Java HotSpot™ 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 问题翻译&#xff1a;Java HotSpot™ 64 位服务器 VM 警告&#xff1a;仅引导加载程序类…

OneDiff加速“图生生”,解锁电商AI图像处理新范式

2024年&#xff0c;电商领域正目睹生成式AI软件工具的飞速发展&#xff0c;AI Generated Content (AIGC) 技术在电商应用中的普及率正在显著提升&#xff0c;这类技术能够显著提高商业运营的效率&#xff0c;并促进业绩的稳步增长。 硅基流动研发的图片/视频生成推理引擎OneDif…

Linux:Jenkins:参数化版本回滚(6)

上几章我讲到了自动集成和部署 Linux&#xff1a;Jenkins全自动持续集成持续部署&#xff08;4&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/136977106 当我们觉得这个页面不行的时候&#xff0c;需要进行版本回滚&#xff0c;回滚方法我这里准备了…

电脑病毒详解(有bat版本 附代码)

众所周知&#xff0c;电脑病毒是所有用电脑的人最怕的东西。 它们是一种恶意软件&#xff0c;旨在破坏、感染或干扰计算机系统的正常运行。它们通过潜入计算机系统并在后台执行恶意代码来实现其目的。病毒可以通过互联网、可移动媒介&#xff08;如USB驱动器&#xff09;或下载…

Java基础知识总结(26)

MyBatis MyBatis框架解决的问题&#xff1a; 减轻使用JDBC的复杂性&#xff0c;不用编写重复的常见connection,Statement;不用编写关闭资源代码。直接使用java对象&#xff0c;表示结果数据。让开发者专注SQL的处理。其他分心的工作由MyBatis代劳。 三层架构 UI:&#xff0…

如何更好地收集软件需求并快速转换成软件功能

摘要 在软件开发过程中&#xff0c;需求收集与转换是确保项目成功的关键环节。本文详细探讨了如何更有效地收集软件需求&#xff0c;并迅速将这些需求转化为实际的软件功能&#xff0c;涉及的方法包括深入的用户研究、原型设计、敏捷开发方法以及持续的反馈循环。 关键词&…