《树莓派Python编程指南》——3.2 在结构体中存储值

简介:

本节书摘来自华章计算机《树莓派Python编程指南》一书中的第3章,第3.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2 在结构体中存储值

除了简单数据类型,Python还允许我们将数据用不同方式组合起来创建结构体。最简单的结构体是sequences(线性结构)。它将信息一个接一个地存储起来。它分为有两类:lists(列表)和tuples(元组)。多数情况下,它们是相似的。
来看接下来的例子:


aee18cbae7f9ac1a39029b44a193c3b8776300ec

我们用方括号将数字括起来构成列表,用圆括号将数字括起来构成元组。到现在为止,它们两个工作起来都是一致的。在结构体名后面跟方括号,方括号中填下标就可以访问单个元素。注意下标从0开始,因此list_1[0]和tuple_1[0]可以访问线性结构中的第一个元素。
当你去更新元素时就会发现列表和元组间的差别:


<a href=https://yqfile.alicdn.com/20048aa63e74a35f2274a62cd11a0975f79c7de1.png" >

可见,你可以更新列表中的单个元素,却不能更新元组中的单个元素。然而,你可以一次性覆盖元组中的所有元素。这时,可以告诉Python将变量tuple_1赋一个新值以取代旧值。


<a href=https://yqfile.alicdn.com/8c47416e9c6bfc4fdafbf64559be6868b177adc2.png" >

上一节中我们提到的strings就是一串字符,它的操作符可以用于列表和元组。下面继续以list_1和tuple_1为例:


754cdae2c6e10f25edc59495ff32857d406b2829

参考表3-3,复习下我们可以在这里使用的字符串操作。
列表和元组中的元素可以是任意数据类型,包括列表和元组自身。如果愿意,你可以创建列表的列表的列表的列表。当然,如果真的这样做了,你的代码将会变得异常难懂。但列表的列表,通常会比较有用。你可以把它当做一个二维表:


7045f2181e5debfb47951dee784650bc37c8cf50

你可以通过主列表和子列表索引来获取元素:

从表


139c3ff4dff56570c8d9f0a653ae3239b0550355

3-4中可以看出来为什么它可以当做二维表。
表3-4 二维列表示例

<a href=https://yqfile.alicdn.com/cd8226a1a63eaf62e30c783f4009c27b2a47f2a6.png
" >

有许多方法可以用来操纵列表。表3-5给出了常用的方法。


3d1aa17aa20e4b55461cb3375c9b50ddb467e72e

这里的多数例子都和我们之前遇见的不一样,因为它们(除了index()和sort())改变了list_3的值而不是返回一些值。例如,在Python解释器中运行第一个例子,当然,你需要额外的一行来显示list_3的值。


<a href=https://yqfile.alicdn.com/6cb63d138fc6f51c08720e0bf9f3d06145c5ae81.png" >

然而,index()和count()仅仅返回一个值:


2a362404d55429b9f2e27a23d234fe5e7f2dab5f

pop(x)有点特殊,因为它一次做了两件事。首先,它返回列表中第x个位置的元素值,同时它还从列表中删除了该元素。试着运行下面的例子,感受下它是如何工作的:


<a href=https://yqfile.alicdn.com/7142fc02e637d0569b0ab5eca9415a788d7a432f.png" >

上面说过,元组除了不能被修改,它和列表非常类似。所有用于列表操作,只要不改变元素值,都可以用于元组:


a480ec8d3ae3eca397c306ea15064ea3bf2b06f6

3.2.1 字典和集合中的非序列元素
你可以认为列表和元组是元素的集合,每个元素都对应了其中的一个下标。例如,在列表[“a”, “b”, “c”, “d”]中,a的下标是0,b的下标是1,以此类推。然而,当你想用非数字的下标时该怎么做呢?例如,你想要创建一个数据结构,把朋友的昵称和真实名字关联起来,如:


<a href=https://yqfile.alicdn.com/33c411b6c7f863336f6a27e8d9682ab004ea94db.png" >

在Python中,可以使用通过花括号来定义的字典(dictionary)。你可以使用下列语句创建字典real_name:


c1e32612350631f5406c6a214ef83e427fcf0fcc

字典中的元素称为键值对(key/value pair),其中第一部分(本例中的昵称)是键(key),第二部分(全名)是值(value)。只需要给定一个新key及其对应的值就可以在字典中新加元素:


e8095401664d5904e17e0aa99760940acf074df1

你可能想知道为什么需要下标或者键。实际上,这些并不是必需的。Python中的集合(set)允许你把一堆数据放在一起而不用指定下标或序号。例如:


bba8827ab0e68d021ed2f03ca1334363887b8180

可以看出,Python使用in操作来测试给定的值是否在集合中。还有些其他操作可以用到集合中。参见表3-6。
表3-6 集合的操作(例子中使用了先前定义的集合)
操作符 含义 例子

返回两个集合共有的元素    
合并两个集合中的元素    
set_1中存在set_2中不存在的元素    
set_1或set_2中存在的元素,不包括两个集合共有的元素    


<a href=https://yqfile.alicdn.com/74cd9f8997c3d3c79c0f3f820a3dd6e47893f65a.png
" >

3.2.2 知识测试
下面的Python语句是什么意思?试想一下,然后将它们输入Python解释器检验下自己的判断。提示:有一些语句会导致错误。


253441abe31e094f89a6266f54a3de7acfdcfb05
相关文章
|
存储 NoSQL MongoDB
Python爬虫之非关系型数据库存储#5
MongoDB、Redis【2月更文挑战第18天】
197 1
|
存储 算法 数据挖掘
【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
本文介绍了2023年中国高校大数据挑战赛赛题B的Python实现方法,该赛题涉及DNA存储技术中的序列聚类与比对问题,包括错误率分析、序列聚类、拷贝数分布图的绘制以及比对模型的开发。
440 2
【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
|
8月前
|
存储 JSON API
Python与JSON:结构化数据的存储艺术
Python字典与JSON格式结合,为数据持久化提供了便捷方式。通过json模块,可轻松实现数据序列化与反序列化,支持跨平台数据交换。适用于配置管理、API通信等场景,兼具可读性与高效性,是Python开发中不可或缺的数据处理工具。
339 0
|
存储 JSON 数据库
在Python中在文件中存储数据
在Python中在文件中存储数据
170 1
|
10月前
|
数据采集 存储 NoSQL
Python爬虫Cookie管理最佳实践:存储、清理与轮换
Python爬虫Cookie管理最佳实践:存储、清理与轮换
|
数据采集 存储 数据处理
Python爬虫-数据处理与存储(一)
Python爬虫-数据处理与存储(一)
189 0
|
存储 数据采集 数据挖掘
Python数据分析实验一:Python数据采集与存储
Python数据分析实验一:Python数据采集与存储
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
SQL 关系型数据库 MySQL
Python爬虫-数据处理与存储(二)
Python爬虫-数据处理与存储(二)
163 0

推荐镜像

更多