Python 主线任务之列表和操作列表,知其然知其所以然【玩转Python】

主线任务

主线任务之数据类型已进行66.6%,今日主线任务为“列表和操作列表”的了解和掌握。了解“列表”是什么的同时也不要忽略“怎么用”。即"知其然知其所以然",方能达到学习的更优效果。

接下来让我们一起开启今日份的Python的主线任务。

数据类型

列表

介绍

列表由一系列按特定顺序排列的元素组成。

word_list = ['i', 'love', 'python']
print(word_list)
>>> ['i', 'love', 'python']

笔记

使用列表中的各个值

使用f字符串根据列表中的值来创建消息。

word_list = ['i', 'love', 'python']
msg=f"{word_list[0].title()} {word_list[1]} {word_list[2].title()}."
print(msg)
>>> I love Python.
在列表末尾添加元素

使用方法 append() 可以将元素'very'、'much'依次添加到列表末尾。

word_list = ['i', 'love', 'python']
word_list.append('very')
word_list.append('much')
print(word_list)
>>> ['i', 'love', 'python', 'very', 'much']
在列表中任意位置插入元素

使用方法 insert() 可在列表的任何位置添加新元素。

insert() 包含两个入参:index (插入位置)和 element (插入元素)。

word_list = ['i', 'love', 'python']
word_list.insert(1,'really')
print(word_list)
>>> ['i', 'really', 'love', 'python']
使用del语句删除任意位置元素

使用 del 语句,可以删除想要删除的确定位置的元素。

word_list = ['i', 'just', 'love', 'python']
del word_list[1]
print(word_list)
>>> ['i', 'love', 'python']
使用方法 pop() 删除元素

方法 pop() 可以删除列表末尾的元素,并让你能够接着使用它。

word_list = ['i', 'love', 'python', 'not relly']
word_pop = word_list.pop()
print(word_list)
>>> ['i', 'love', 'python']
print(word_pop)
>>> not relly

方法 pop() 也可以删除列表中任意位置的元素,只需在圆括号中指定要删除元素的索引即可。

word_list = ['i', 'just', 'love', 'python']
word_pop = word_list.pop(1)
print(word_list)
>>> ['i', 'love', 'python']
print(word_pop)
>>> just
根据值删除元素

方法 remove() 可以根据要删除的元素的值删除对应元素。

word_list = ['i', 'just', 'love', 'python']
word_list.remove('just')
print(word_list)
>>> ['i', 'love', 'python']

注意,对于不存的值,使用 remove() 进行删除会报错。

word_list.remove('so')
>>> ValueError: list.remove(x): x not in list
使用方法 sort() 对列表永久排序

方法 sort() 可以对列表进行排序,从小到大,且是永久性地修改列表元素的排列顺序。

sort_list = [2, 11, 8, 55, 6, 7, 23, 33, 5, 6]
sort_list.sort()
print(sort_list)
>>> [2, 5, 6, 6, 7, 8, 11, 23, 33, 55]

如果想得到从大到小排序,只需向 sort() 方法传递参数 reverse=True 即可。

sort_list.sort(reverse=True)
>>> [55, 33, 23, 11, 8, 7, 6, 6, 5, 2]
使用函数 sorted() 对列表临时排序

方法 sorted() 可以实现特定顺序显示列表元素,即保留列表元素原来的排列顺序,同时以特定的顺序呈现它们。

sort_list = [2, 11, 8, 55, 6, 7, 23, 33, 5, 6]
print(sorted(sort_list))
>>> [2, 5, 6, 6, 7, 8, 11, 23, 33, 55]
print(sort_list)
>>> [2, 11, 8, 55, 6, 7, 23, 33, 5, 6]
print(sort_list[1])
>>> 11

方法 sorted() 包括三个参数:

iterable:表示指定的序列;

key:可以自定义排序规则;

reverse:指定以升序(False,默认)还是降序(True)进行排序。

word_list = ['i', 'love', 'python', 'so', 'much']
print(sorted(word_list, key=lambda x: len(x)))
>>> ['i', 'so', 'love', 'much', 'python']
倒着打印列表

方法 reverse() 可以反转列表元素的排列顺序。

word_list = ['i', 'love', 'python']
word_list.reverse()
print(word_list)
>>> ['python', 'love', 'i']

如果还想恢复原来的列表顺序,只需要对列表再调用一次 reverse()

word_list.reverse()
print(word_list)
>>> ['i', 'love', 'python']

练一练

练习3-4:嘉宾名单

如果你可以邀请任何人共进晚餐(无论是故去的还是在世的),你会邀请哪些人?请创建一个列表,其中包含至少三个你想邀请的人;然后,使用这个列表打印消息,邀请这些人来与你共进晚餐。

name_list = ['zhang san', 'shang ying yan', 'wang wu', 'ning zai chun', 'ning jie']
print("花径不曾缘客扫,蓬门今始为君开。")
print(f"欢迎,{name_list[1].title()}")
print(f"欢迎,{name_list[3].title()}")
print(f"欢迎,{name_list[4].title()}")
>>> 花径不曾缘客扫,蓬门今始为君开。
>>> 欢迎,Shang Ying Yan
>>> 欢迎,Ning Zai Chun
>>> 欢迎,Ning Jie
练习3-4:添加嘉宾

你刚找到了一个更大的餐桌,可容纳更多的嘉宾。向嘉宾名单中间位置和末尾分别添加一位嘉宾。

打印一系列消息,向名单中的每位嘉宾发出邀请。

name_list = ['zhang san', 'shang ying yan', 'wang wu', 'ning zai chun', 'ning jie']
name_list.insert(4,'lily')
name_list.append('chai popo')
print("花径不曾缘客扫,蓬门今始为君开。")
print(f"欢迎,{name_list[1].title()}")
print(f"欢迎,{name_list[3].title()}")
print(f"欢迎,{name_list[4].title()}")
print(f"欢迎,{name_list[5].title()}")
print(f"欢迎,{name_list[6].title()}")
>>> 花径不曾缘客扫,蓬门今始为君开。
>>> 欢迎,Shang Ying Yan
>>> 欢迎,Ning Zai Chun
>>> 欢迎,Lily
>>> 欢迎,Ning Jie
>>> 欢迎,Chai Popo

操作列表

笔记

遍历整个列表

使用 for 循环打印每一个好友的名字:

name_list = ['lily', 'shang ying yan', 'chai paopao', 'ning zai chun', 'ning jie']for name in name_list:print(name)
>>> lily
>>> shang ying yan
>>> chai paopao
>>> ning zai chun
>>> ning jie

注意,位于 for 语句后面且属于循环组成部分的代码行,一定要缩进。否则,会报错:

for name in name_list:
print(name)
>>> IndentationError: expected an indented block
使用 range() 创建数字列表

函数 range() 可以生成一系列数,可以使用 for 循环进行打印。

num_list_2 = range(1, 6)
for num2 in num_list_2:print(num2)
>>> 1
>>> 2
>>> 3
>>> 4
>>> 5

注意,使用 range() 方法生成的序列,包含开始的数字,但是不包含结尾的数字。

也可以通过索引得到对应的元素。

print(num_list_2[0])
>>> 1

还有一种创建数字列表的方式,使用函数 list() range() 的结果直接转换为列表。

num_list = list(range(1, 6))
print(num_list)
>>> [1, 2, 3, 4, 5]

我们再试一下循环:

num_list = list(range(1, 6))
for num1 in num_list:print(num1)
>>> 1
>>> 2
>>> 3
>>> 4
>>> 5
range() 和 list() 的区别

对比一下二者的区别:

1、 range() 生成的序列类型很固定必须是整数,list() 则不需要。

word_list = list('pyhon1')
print(word_list)
>>> ['p', 'y', 'h', 'o', 'n', '1']

2、 range() 函数还有第三个参数-step,可以实现间隔数列。

num_list_2 = range(1, 11, 2)
print(list(num_list_2))
>>> [1, 3, 5, 7, 9]
对数字列表执行简单的统计计算
num_list_2 = range(1, 11)
print(max(num_list_2))
>>> 10
print(min(num_list_2))
>>> 1
print(sum(num_list_2))
>>> 55
列表解析
squares = [value**2 for value in range(1, 11)]
print(squares)
>>> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

上面的代码中,首先生成了一个数列,然后循环数列得到每个元素 value,将 value 的值提供给计算平方值的表达式,最终得到所有值平方之后的数列。

练一练

练习4-7:3的倍数

创建一个列表,其中包含3~30能被3整除的数,再使用一个for循环将这个列表中的数打印出来。

num_list = range(3, 31, 3)
for num in num_list:print(num)
>>> 3
>>> 6
>>> 9
>>> 12
>>> 15
>>> 18
>>> 21
>>> 24
>>> 27
>>> 30

练习4-9:立方解析

使用列表解析生成一个列表,其中包含前10个非0整数的立方。

num_list = [(value ** 3) for value in range(1, 11)]
for num in num_list:print(num)
>>> 1
>>> 8
>>> 27
>>> 64
>>> 125
>>> 216
>>> 343
>>> 512
>>> 729
>>> 1000

总结

以上,就是我在 Python 学习中,记录的关于数据类型的知识点,同时对于部分练习题的作答。

此外,还增加了一些容易被忽视的功能点和对比,额外查了其他资料,通过一个点联想到相关点,这样一来加深了当前功能的印象。

读完本文的主要收获有:

1、对于列表,即学习了列表是什么以及如何使用其中的元素、如何定义列表以及如何增删元素、如何对列表进行排序,又学习了如何操作列表元素、如何遍历整个列、如何解析列表处理其中的元素。


作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。

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

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

相关文章

Orange3数据预处理(转换器组件)

该组件接收数据,然后重新应用之前在模板数据上执行的转换。 这些转换包括选择变量的子集以及从数据中出现的其他变量计算新的变量, 例如,离散化、特征构建、主成分分析(PCA)等。 在Orange3中,描述的这个组件…

php运行报错: Class ‘SimpleXMLElement‘ not found in

前言 CentOS7php 8.1.27CentOS7 利用remi yum源安装php8.1 php运行报错: Class ‘SimpleXMLElement’ not found in [12-Mar-2024 05:47:29 UTC] PHP Warning: Undefined array key "token" in /data/www/a.php on line 3 [12-Mar-2024 05:47:29 UTC]…

初窥机器学习

人工智能 近几年来,人工智能(AI)已成为家喻户晓的术语,我们在游戏、电影(还记得J.A.R.V.I.S吗?)和书籍中经常看到它的提及和描绘,但人工智能究竟是什么呢? 人工智能简单…

Linux下阻塞IO驱动实验实例三

一. 简介 前面两篇学习了两种针对应用程序阻塞式访问设备时,驱动的处理方法。文章地址如下: Linux下阻塞IO驱动实验实例一-CSDN博客 Linux下阻塞IO驱动实验实例二-CSDN博客 本文继续学习另外一种针对阻塞式访问设备,驱动的实现方式,核心还是使用等待队列的机制。 二. …

【Python】新手入门学习:什么是硬编码?如何避免硬编码?

【Python】新手入门学习:什么是硬编码?如何避免硬编码? 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教…

Python爬虫-使用Prefect框架实现一个可视化爬虫项目

前言 本文是该专栏的第19篇,后面会持续分享python爬虫干货知识,记得关注。 相信有的同学,在处理爬虫项目的时候,有时也会需要你将爬虫项目进行一个可视化展示,方便管理者能及时详细的了解当前爬虫任务的执行进度以及执行情况,甚至需要做一个爬虫监控预警的可视化任务。 …

初学Vue+Element——Element使用

0 引言 前端的开发模式为MVVM(Model-View-ViewModel),而Vue侧重于VM开发,主要用于数据绑定到视图的,而ElementUI则侧重于V开发的前端框架,主要用于开发美观的页面的。 1 ElementUI介绍 Element:是饿了么公司前端开发…

项目实战-tpshop商城项目

项目实战-tpshop商城项目 环境部署准备软件工具准备远程连接测试远程连接测试-查看虚拟机IP地址远程连接测试-检测本机与虚拟机是否连通远程连接测试-通过远程工具连接linux服务器 常见问题处理 环境部署项目技术架构介绍部署tpshop项目-tpshop验证数据库验证用户信息表熟悉商品…

智慧公厕的创新:革命性的城市公共卫生设施

在现代城市中,公厕作为城市卫生设施的重要组成部分,对于提升城市形象和保障市民生活品质起着重要作用。然而,传统公厕普遍存在环境脏乱差、设施老旧、管理不规范等问题,给市民的使用体验带来了很多不便和不愉快。针对这一问题&…

魔法之线:探索string类的神秘世界

🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🙈个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE 🐼本文由GOTXX原创,首发CSDN&…

bug--xxoobject has no attribute xxx

Python 创建类的实例后却不能调用写的方法,检查了半天原来是缩进的问题,def函数不应该和class并列 只能说这个英文空格太小了,看不出来。。。。

敏捷估算: 成功的技巧和窍门

敏捷估算在敏捷项目管理中扮演着关键的角色,使团队能够估算完成任务所需的工作量、时间和资源。精确的估算使团队能够有效地计划他们的工作,管理期望,并在整个项目期间做出明智的决策。在本文中,我们将深入探讨各种敏捷估算技术和…

【线代基础】张量、向量、标量、矩阵的区别

1、标量(Scalar) 纯数字,无方向性、无维度概念。因此也叫 标量张量、零维张量、0D张量 例如,x18,x21.34 x1、x2即为标量 2、张量(tensor) 具有方向性,可以理解为一个多维数组&a…

python学习笔记 -- 函数

目录 一. 函数的定义和调用 二. 函数的返回值 三. 变量的作用域 四. 函数的链式调用 五. 函数的嵌套调用 六. 函数的递归调用 七. 函数参数的默认值 八. 关键字传参 一. 函数的定义和调用 函数,指一段可以被重复调用的代码。在python中,函数定义…

Redis系列之持久化机制RDB和AOF

Redis系列之持久化机制RDB和AOF 文章目录 1. 为什么需要持久化?2. 持久化的方式3. RDB机制3.1 RDB机制介绍3.2 配置RDB3.3 什么时候触发3.4 操作实例3.5 RDB优势和不足 4. AOF机制4.1 什么是AOF机制?4.2 同步机制4.3 重写机制4.4 AOF的优势和不足 混合模…

新手做抖店,0基础玩转抖店,运营实操步骤!

我是电商珠珠 抖店的热度很高,很多新手想要去入驻抖店,但有部分人怕麻烦,不知道抖店操作具体有多复杂。其实,运营抖店很简单,就去选选品、找找达人、找找货源厂家等,具体怎么做,我今天一次性来…

简单使用国产数据库—达梦

达梦数据库是一款由中国的达梦软件公司开发的关系数据库管理系统(RDBMS),它在业界以其高性能、可扩展性和安全性而著称。该系统广泛应用于各种应用程序的数据存储和管理,满足用户对于数据处理和管理的多样化需求。 安装好的达梦数…

【Stable Diffusion】入门:AI绘画提示词+参数设置攻略

目录 1 提示词1.1 分类和书写方式1.1.1 内容型提示词1.1.2 标准化提示词1.1.3 通用模板 1.2 权重1.2.1 套括号1.2.2 数字权重1.2.3 进阶语法 1.3 负面提示词 2 参数详解2.1 Sampling steps2.2 Sampling method2.3 Width, Height2.4 CFG Scale2.5 Seed2.6 Batch count, Batch si…

蓝桥杯Python题目类型

"蓝桥杯"是一项全国性的软件编程竞赛,旨在促进软件和信息技术领域专业人才培养。由于每年的题目都会有所变化,我无法提供具体的蓝桥杯Python题目。但是,我可以告诉你一些通常出现在编程竞赛中的Python题目类型,以及你可…

论文翻译 - BITE: Textual Backdoor Attacks with Iterative Trigger Injection

论文链接:https://arxiv.org/pdf/2205.12700.pdf 项目代码:https://github.com/INK-USC/BITE BITE: Textual Backdoor Attacks with Iterative Trigger Injection Abstract1 Introduction2 Threat Model3 Methodology3.1 Bias Measurement on Label Dist…