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

3.2 在结构体中存储值

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

来看接下来的例子:

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

当你去更新元素时就会发现列表和元组间的差别:

https://yqfile.alicdn.com/20048aa63e74a35f2274a62cd11a0975f79c7de1.png" >

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

https://yqfile.alicdn.com/8c47416e9c6bfc4fdafbf64559be6868b177adc2.png" >

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

参考表3-3,复习下我们可以在这里使用的字符串操作。

列表和元组中的元素可以是任意数据类型,包括列表和元组自身。如果愿意,你可以创建列表的列表的列表的列表。当然,如果真的这样做了,你的代码将会变得异常难懂。但列表的列表,通常会比较有用。你可以把它当做一个二维表:

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

从表

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

表3-4 二维列表示例

https://yqfile.alicdn.com/cd8226a1a63eaf62e30c783f4009c27b2a47f2a6.png

" >

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

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

https://yqfile.alicdn.com/6cb63d138fc6f51c08720e0bf9f3d06145c5ae81.png" >

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

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

https://yqfile.alicdn.com/7142fc02e637d0569b0ab5eca9415a788d7a432f.png" >

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

3.2.1 字典和集合中的非序列元素

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

https://yqfile.alicdn.com/33c411b6c7f863336f6a27e8d9682ab004ea94db.png" >

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

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

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

可以看出,Python使用in操作来测试给定的值是否在集合中。还有些其他操作可以用到集合中。参见表3-6。

表3-6 集合的操作(例子中使用了先前定义的集合)

操作符 含义 例子

返回两个集合共有的元素

合并两个集合中的元素

set_1中存在set_2中不存在的元素

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

https://yqfile.alicdn.com/74cd9f8997c3d3c79c0f3f820a3dd6e47893f65a.png

" >

3.2.2 知识测试

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

树莓派python编程读取电压_《树莓派Python编程指南》——3.2 在结构体中存储值-阿里云开发者社区...相关推荐

  1. python读取hdf-eos5数据_《Python和HDF 5大数据应用》——2.4 你的第一个HDF5文件-阿里云开发者社区...

    本节书摘来自异步社区<Python和HDF 5大数据应用>一书中的第2章,第2.4节,作者[美]Andrew Collette(科莱特),胡世杰 译,更多章节内容可以访问云栖社区" ...

  2. python面向过程实践汉诺塔_递归汉诺塔-和递归汉诺塔相关的内容-阿里云开发者社区...

    多柱汉诺塔最优算法设计探究 多柱汉诺塔最优算法设计探究 引言 汉诺塔算法一直是算法设计科目的最具代表性的研究问题,本文关注于如何设计多柱汉诺塔最优算法的探究.最简单的汉诺塔是三个柱子(A.B.C),因 ...

  3. python django web典型模块开发实战_带你读《Python Django Web典型模块 开发实战》之一:从新浪微博聊起多端应用-阿里云开发者社区...

    Python Django Web典型模块 开发实战 点击查看第二章 点击查看第三章 寇雪松 编著 第1章 从新浪微博聊起多端应用 当人们听到"新浪",脑海里第一个浮现的关联词是& ...

  4. python将excel转换成图片_python-尝试将Excel文件保存为图片并加上水印-阿里云开发者社区...

    python-尝试将Excel文件保存为图片并加上水印 场景:并不是将 excel 的 chart 生成图片,而是将整个表格内容生成图片. 1. 准备工作 目前搜索不到已有的方法,只能自己尝试写一个, ...

  5. python听歌识曲爬虫_Python爬取网易云音乐热门评论的搜索结果-阿里云开发者社区...

    网易云音乐评论爬虫(三):爬取歌曲的全部评论 用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都有很多评论,热门歌曲的评论更是接近百万或者是超过百万条.现在我就来分享一下如何爬取网易云音乐歌曲的 ...

  6. flutter能开发游戏吗_不用 H5,闲鱼 Flutter 如何玩转小游戏?-阿里云开发者社区...

    什么是Candy引擎? Candy 是闲鱼技术团队设计开发的一款引擎: APP嵌入式的.轻量级的.易于开发.性能稳定的互动引擎: 绘制系统高度融合Flutter体系,游戏场景和Flutter UI支持 ...

  7. tableau三轴合并_《Tableau数据可视化实战》——1.12节合并不同数据源-阿里云开发者社区...

    本节书摘来自华章社区<Tableau数据可视化实战>一书中的第1章,第1.12节合并不同数据源,作者(美)Ashutosh Nandeshwar,更多章节内容可以访问云栖社区"华 ...

  8. redis 哨兵 异步_突破Java面试(23-8) - Redis哨兵主备切换的数据丢失问题-阿里云开发者社区...

    1 数据丢失的两个场景 主备切换的过程,可能会导致数据丢失 1.1 异步复制 由于 master => slave的复制是异步的,所以可能有部分数据还没复制到slave,master就宕机,于是 ...

  9. 钉钉微应用怎么进入_钉钉微应用如何打开本地app (Android)-问答-阿里云开发者社区-阿里云...

    老李归来 2016-01-28 10:14:09 Re钉钉微应用如何打开本地app (Android)经测试,免登认证已成功,执行 dd.device.launcher.checkInstalledA ...

最新文章

  1. WSO2 API Manager安装部署配置
  2. 写给计算机的大学生!
  3. js 中对象属性的特性
  4. FluorineFx + Flex视频聊天室案例开发----客户端
  5. [IOI2008]Island
  6. ubuntu下面的robo3t 使用笔记
  7. 我是在这里学到的Linux知识的
  8. vue 打包之后不兼容ie_vue中使用的一些问题(IE不兼容,打包样式不生效)
  9. UVA960 Gaussian Primes【数学】
  10. 时间复杂度为O(n)的计数排序算法
  11. Ubuntu 15.04 或更新版 更新源/Ubuntu 15.04 Vivid Vervet更新源已可用
  12. unity描边发光shader_Unity Shader 边缘高亮、描边
  13. 机顶盒刷成普通android,移动网络电视机顶盒如何刷成安卓系统
  14. gps84转换gcj02公式_WGS84-GCJ-02坐标转化
  15. (19年最新,操作极简)linux下使用xmind zen破解版
  16. 条形码、二维码、RFID优缺点,卫星定位,传感器分类及应用场景
  17. 深度学习-深度学习集群管理方案
  18. oracle中sql查询
  19. pytorch2-gym
  20. python数据分析案例分析题_Python数据分析-案例分析

热门文章

  1. python支持向量机_支持向量机(SVM)Python实现
  2. OpenCV学习笔记(九): 漫水填充:floodFill()
  3. OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)
  4. 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码
  5. Struts2之Crud综合实例
  6. MFC 最详细入门教程
  7. oracle查询语句大全(oracle 基本命令大全一)
  8. Effective Java~58. for-each 循环优先于传统的for 循环
  9. Replace Parameter with Explicit Methods(以明确函数取代参数)
  10. android 源码分析notification,# Notification 源码分析