【回眸】Python入门(五)基础语法列表和词典:Python如何消灭重复性劳动

 前言
本篇博客为填坑篇,这个系列的上一篇竟然是2021年的9月30更新的,离谱,差点就到断更两周年纪念日了,后续逐渐走向填坑的每一天,继续创作,希望这个系列的专栏文章能帮助到更多有需要的人。

列表

什么是列表? 

随便写一个: class(列表名) = (赋值) ['高一四班','高二八班','高三六班'](外部是中括号,用逗号隔开)。

一个列表需要用中括号[ ]把里面的各种数据框起来,里面的每一个数据叫作“元素”。每个元素之间都要用英文逗号隔开。

这就是列表的标准格式,现在请创建一个列表名为list1的列表,列表里有三个元素:'啤酒鸭',18,1.75,并将其打印出来:


list1=['啤酒鸭',18,1.75]
print(list1)

列表很包容,各种类型的数据(整数/浮点数/字符串)无所不能包。

取出列表里具体的某一个元素

但问题来了,如果只想取出列表里具体的某一个元素该怎么办呢?

这就涉及到一个新的知识点:偏移量。列表中的各个元素,好比教室里的某排学生那样,是有序地排列的,也就是说,每个元素都有自己的位置编号(即偏移量)。

从上图可得:1.偏移量是从0开始的,而非从1开始;2.列表名后加带偏移量的中括号,就能取到相应位置的元素。

所以,可以通过偏移量来对列表进行索引(可理解为搜索定位),读取我们所需的元素。

在【‘啤酒鸭’,'DD','回眸','咸蛋超人'】里取出啤酒鸭这个元素的代码是怎么样的呢?


students = ['咸蛋超人','啤酒鸭','DD','回眸']
print(students[1])

 从列表提取多个元素

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

用冒号来截取列表元素的操作叫作切片,顾名思义,就是将列表的某个片段拿出来处理。这种切片的方式可以从列表中取出多个元素。

冒号左边空,就要从偏移量为0的元素开始取;右边空,就要取到列表的最后一个元素。后半句:冒号左边数字对应的元素要拿,右边的不动

速记:左右空取到头,左要取,右不取。

students = ['啤酒鸭','回眸','严啤啤','啤雅雅']
print(students[:3])   

 给列表增加/删除元素

增加元素:

append函数并不生成一个新列表,而是让列表末尾新增一个元素。而且,列表长度可变,理论容量无限,所以支持任意的嵌套。

students = ['小明','小红','小刚']
students.append('小美')
print(students)

使用append 添加元素可以将新元素添加到链表里。

删除元素:

del语句非常方便,可以删除一个元素,也能一次删除多个元素(原理和切片类似,左取右不取)。

语法是:del 列表名[元素的索引]

students = ['小明','小红','小刚','小美']
del students[1:2]
print(students)

运行的结果是发现小红删了。

字典

这次期中考呢、,小啤、小眸、小严分别考了95、90和90分。

假如还用列表来装数据的话,需要新创建一个列表来专门放分数,而且要保证和姓名的顺序是一致的,很麻烦。所以类似这种名字和数值(如分数、身高、体重等)两种数据存在一一对应的情况,用第二种数据类型——“字典”(dictionary)来存储会更方便。

students = ['小啤','小眸','小严']

scores = {'小啤':95,'小眸':90,'小严':90}
print(len(scores))

scores(字典名) = {'小啤'(键):95(值),'小眸':90,'小严':90}(大括号)

列表中的元素是自成一体的,而字典的元素是由一个个键值对构成的,用英文冒号连接。如'小啤':95,其中我们把'小啤'叫键(key),95叫值(value)。

这样唯一的键和对应的值形成的组合,我们就叫做【键值对】,上述字典就有3个【键值对】:'小啤':95'小眸':90'小严':90

如果不想口算,可以用len()函数来得出一个列表或者字典的长度(元素个数),括号里放列表或字典名称。

这里需要强调的是,字典中的键具备唯一性,而值可重复。

如果你不小心声明了两个以'小啤'为键的【键值对】,后出现的【键值对】会覆盖前面的【键值对】。打印出的值也会以后面一个为准。

这便是从字典中提取对应的值的用法。和列表相似的是要用[ ],不过因为字典没有偏移量,所以在中括号中应该写键的名称,即字典名[字典的键]。

如果想取出小啤的成绩的值,可以运行下面的代码 

scores = {'小啤':95,'小眸':90,'小严':90}
print(scores['小啤'])

字典的删改

删除字典里键值对的代码是del语句del 字典名[键],而新增键值对要用到赋值语句字典名[键] = 值

scores = {'小啤':95,'小眸':90,'小严':90}
del scores['小严']
scores['小严']=92
scores['小菜']=85
print(scores)

列表和字典的异同

差异

列表中的元素是有自己明确的“位置”的,所以即使看似相同的元素,只要在列表所处的位置不同,它们就是两个不同的元素。

而字典相比起来就显得随和很多,调动顺序也不影响。因为列表中的数据是有序排列的,而字典中的数据是随机排列的。

这也是为什么两者数据读取方法会不同的原因:列表有序,要用偏移量定位;字典无序,便通过唯一的键来取值。

共同点

在列表和字典中,如果要修改元素,都可用赋值语句来完成

第二个共同点即支持任意嵌套。除之前学过的数据类型外,列表可嵌套其他列表和字典,字典也可嵌套其他字典和列表。

练手demo

练习目标:

我们会通过今天的作业,更熟练地取出层层嵌套中的数据,并了解一种新的数据类型:元组。

练习要求:

我们知道了列表和字典的不同:列表的基本单位是元素,而字典里是键值对。所以,两者提取数据的方式也不同。
你可以通过头两个练习来验证自己已经掌握了。
而在第三道练习,你会学会提取元组里的数据。

1、请你通过所学知识,把列表list1中的'love'取出来,并打印出来。

2、请你通过所学知识,把字典dict1中的'love'取出来,并打印出来。

3、下面,介绍一种新的数据类型:元组(tuple)。 可以看到:元组和列表很相似,不过,它是用小括号来包的。
元组和列表都是序列,提取的方式也是偏移量,如 tuple1[1]、tuple1[1:]。另外,元组也支持任意的嵌套。
请你根据以上提供的信息,将tuple1中的A和list2中的D打印出来。看到了,理解了,运用了,就能够掌握了。

 

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

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

相关文章

操作系统的发展史(DOS/Windows篇)

█ DOS操作系统 20世纪70年代,伴随着计算机技术的成熟,操作系统也进入了一个快速发展阶段。现代操作系统的概念,也在那一时期逐渐形成。 1975年初,MITS电脑公司推出了基于Intel 8080芯片的Altair 8800微型计算机。这是人类历史上…

电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。

统一供应商门户 便捷动态、呈现丰富 供应商门户具备内外协同的能力,为外部供应商集中推送展示与其相关的所有采购业务信息(历史合作、考察整改,绩效评价等),支持供应商信息的自助维护,实时风险自动提示。…

CSAPP - AttackLab实验(阶段1-5)

AttackLab实验 实验内容 官网:http://csapp.cs.cmu.edu/3e/labs.html “AttackLab”是一个Linux下的可执行C程序,包含了5个阶段(phase1~phase5)的不同内容。程序运行过程中,要求学生能够根据缓冲区的工作方式和程序…

Sui Builder House日本京都站开启报名

下一站Sui Builder House将于6月29-30日在日本京都举行,为世界各地的开发者提供身临其境地学习和交流的机会。 春日的樱花已经绽放,黄金周也已经过去,现在是时候来京都参加Sui Builder House一起庆祝夏天的来临了。来自日本和周边地区的开发…

我用ChatGPT写2023高考语文作文(一):全国甲卷

2023年 全国甲卷 适用地区:广西、贵州、四川、西藏 人们因技术发展得以更好地掌控时间,但也有人因此成了时间的仆人。 这句话引发了你怎样的联想与思考?请写一篇文章。 要求:选准角度,确定立意,明确文体&am…

【TaskMatrix.AI - Visual ChatGPT】连接超大模型和超多API来完成任务

Github项目地址:https://github.com/microsoft/TaskMatrix 目前大规模预训练模型(比如ChatGPT)已经能够完成多个任务,例如 提供强大的对话功能,in-context learning能力和代码生成能力生成高层次的解决问题框架 然而…

什么是 tokens,ChatGPT里面的Tokens如何计数?

什么是 tokens,ChatGPT里面的Tokens如何计数? 什么是 tokens? Tokens 可以被认为是词语的片段。在 API 处理提示之前,输入会被分解成 tokens。这些 tokens 并不会精确地在单词的开始或结束处切分 - tokens 可以包含尾随的空格甚…

TI DSP芯片C2000系列读取FLASH数据

本文记录如何读取TI芯片的flash数据 进入TI官网下载UNIFLASH工具 点击查看详情 点击下载选项,根据系统下载对应版本 下载完成之后,点击安装。安装完成之后双击图标点开。如果你的板子已经供电,且编程器已经连接好,UNIFLASH会自动…

chatgpt赋能python:用Python实现ping命令:掌握网络连接的艺术

用Python实现ping命令:掌握网络连接的艺术 当我们需要测试网络连接的时候,ping命令是最经典的选择之一。然而,在一些情况下,使用命令行并不是很方便。那么,有没有可能用Python编写一个类似ping的功能呢? …

Linux中/dev/null和/dev/zero的作用

1./dev/null和/dev/zero介绍 在Linux环境中,我们会经常用到/dev/null和/dev/zero,今天为大家讲讲/dev/null和/dev/zero的作用以及使用场景。 1.1./dev/null介绍 linux中/dev/null,它是一种特殊的虚拟设备,用于写入而不是读取&a…

探秘美颜SDK的动态贴纸的技术原理

美颜SDK作为美颜相机的重要组成部分,其动态贴纸技术也是很多用户喜爱的功能之一。本文将探秘美颜SDK的动态贴纸技术,从技术原理、应用场景和未来发展等方面进行分析。 一、技术原理 **1. 人脸识别技术。**在添加动态贴纸时,第一步要做的肯定…

navicat 怎么导入运行bak文件,详细教程

文章目录 一、新建数据库,点击高级设置访问权限二、点击SQL Server备份三、右击空白,点击从文件还原四、找到备份的bak文件五、 点击“高级”选项六、然后点击 生产SQL,最后点 还原 一、新建数据库,点击高级设置访问权限 二、点击…

coco-annotator的安装与使用

文章目录 coco-annotator的安装与使用1. coco-annotator是什么2. coco-annotator可以做什么3. coco-annotator的安装3.1 先决条件3.2 coco-annotator的下载与安装 4. coco-annotator的使用4.1 创建用户4.2 创建数据集4.3 标注图像4.4 下载标注信息 5. coco-annotator远程访问5.…

[NOI2009] 描边

题目描述 小 Z 是一位杰出的数学家。聪明的他特别喜欢研究一些数学小问题。 有一天,他在一张纸上选择了 n 个点,并用铅笔将它们两两连接起来,构成 (�−1)22n(n−1)​ 条线段。由于铅笔很细,可以认为这些线段的宽度为…

2023软件测试卷出天际!!!性能测试为啥一枝独秀?

近十年是中国互联网发展最快的10年,互联网用户从4亿增长至10亿。面对用户量的暴增,用户体验就成为互联网产品最大的考验。而 影响用户体验的最重要因素就是性能。 流量为王的时代,性能测试是所有产品上线前必须通过的重要环节。 企业招聘性…

上海亚商投顾:沪指小幅震荡微涨 AI应用端持续活跃

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 大小指数今日走势分化,沪指全天窄幅震荡,创业板指低开低走,盘中一度跌超1.6%&a…

基于“三维六类”干扰分析模型进行FDD900干扰规避优化指导

1.概述 随着网络发展,鉴于900M覆盖上的优势,为增强深度覆盖及竞对提升,当前FDD 900M已在加快部署,但随之也带来了干扰问题。当前,干扰排查成为FDD 900M部署过程中大量存在的难题。由于干扰排查难度大,且排…

《Contrastive Learning for Unpaired Image-to-Image Translation》

Contrastive Learning for Unpaired Image-to-Image Translation 1. 摘要2. 介绍3. 相关工作3.1 图像转换、循环一致性3.2 关系保持3.3 深度网络嵌入中的感知相似性3.4 对比表示学习 4. 方法 原文及代码链接 https://github.com/taesungp/contrastive-unpaired-translation 1.…

Nginx踩坑记录(二) nginx: [warn] invalid value “TLSv1.3“ in /etc/nginx/nginx.conf:20

问题详情 (通过指定配置文件的方式)启动nginx,提示告警,nginx启动失败。 rootvultr:~# nginx -c /etc/nginx/conf/nginx.conf nginx: [warn] invalid value "TLSv1.3" in /etc/nginx/conf/conf.d/v2ray.conf:20问题原…

发现问题更全面,减少测试成本:WEB自动化测试的价值分析!

目录 前言: 一、WEB自动化测试的价值 1. 提高测试效率 2. 提高软件的质量 3. 减少测试成本 二、WEB自动化测试的瓶颈 1. 可维护性差 2. 兼容性问题 3. 比手工测试慢 三、代码示例 四、总结 前言: 自动化测试是软件开发中必不可少的一环&…
最新文章