1690_Python中的复数数据类型

2023-05-16

全部学习汇总:GreyZhang/python_basic: My learning notes about python. (github.com)

之前总结的知识中设计的数据类型有整形、浮点、字符串等,这些类型表示的都是一个单独的独立数据对象。在Python有也有表示复数改变的数据类型,也就是下面将要总结整理的袁术、列表以及字典。

元组

元组的语法表达方式是把一系列的数据对象放到小括号里,用逗号分开。在IDLE环境中做相应的演示如下:

>>> t1 = (1,2,1.8,2.0,'a','bcd')

>>> t1

(1, 2, 1.8, 2.0, 'a', 'bcd')

其中,元组的数据成员可以是整形、浮点、字符串等。另外,元组的数据成员的数据类型也可以使元组。例如:

>>> t2 = (t1,123)

>>> t2

((1, 2, 1.8, 2.0, 'a', 'bcd'), 123)

需要注意的式,t1是作为一个整体成为了t2的一个成员而不是,每个t1的成员都是t2的组成成员。

另外,需要注意的是单元素的元组定义的时候需要加上一个逗号分隔符,否则定义的其实是一个单数的数据类型。如下:

>>> t_single = (1)

>>> type(t_single)

<type 'int'>

>>> t_single = (1,)

>>> type(t_single)

<type 'tuple'>

>>> t_single

(1,)

从上面的运行结果可以看出,(1)构造的仅仅是一个整形的数据。

下面再看一下元组的加法,两个元组可以相加构造出一个新的元组对象。例如,接着上面的操作,利用t1以及t_single来构造一个新的元组t3,利用t1以及t2构造新的元组t4:

>>> t3 = t1 + t_single

>>> t4 = t1 + t2

>>> t3

(1, 2, 1.8, 2.0, 'a', 'bcd', 1)

>>> t4

(1, 2, 1.8, 2.0, 'a', 'bcd', (1, 2, 1.8, 2.0, 'a', 'bcd'), 123)

元组元素的遍历

可以使用for循环去遍历元组中的每一个元素,例如设计如下程序:

在IDLE中load执行的结果:

>>> ================================ RESTART ================================

>>>

>>> WalkTuple(t1)

1

2

1.8

2.0

a

bcd

(1, 2, 1.8, 2.0, 'a', 'bcd')

123

元组元素的访问与切片:

如同字符串,元组也支持索引访问以及切片操作。在IDLE环境中进行相关演示如下:

>>> t1 = (1,3,5,7,9)

>>> t1[3]

7

>>> t1[:4]

(1, 3, 5, 7)

>>> t1[0:3]

(1, 3, 5)

需要注意的是元组是不可以修改的。当尝试修改元组中的元素时会报错:

>>> t1[3] = 8

Traceback (most recent call last):

  File "<pyshell#21>", line 1, in <module>

    t1[3] = 8

TypeError: 'tuple' object does not support item assignment

元组的使用(寻找公约数):

设计代码如下:

在IDLE环境中load执行结果:

>>> ================================ RESTART ================================

>>>

>>> Divisors(20,100)

(1, 2, 4, 5, 10, 20)

>>> Divisors(6,12)

(1, 2, 3, 6)

列表

列表在形式上与元组有一定的相似性,但是在单元素定义以及表现形式上有一定的差异。同时,列表是可以修改的。

列表在语法形式上,使用的式方括号括起它的每个元素。而在单个元素的列表定义时,不用担心会跟单数的数据类型发生混淆,因此不用像元组一样增加一个逗号。在IDLE环境中示范如下:

>>> l1 = [1]

>>> l1

[1]

列表的每个元素都可以通过索引的方式访问以及修改,同时也支持切片。在IDLE环境中示范如下:

>>> L2 = [1,2,3,4,'abc','def']

>>> L2

[1, 2, 3, 4, 'abc', 'def']

>>> L2[3]

4

>>> L2[3] = 'abcd'

>>> L2

[1, 2, 3, 'abcd', 'abc', 'def']

>>> L2[:3]

[1, 2, 3]

>>> L2[0:4]

[1, 2, 3, 'abcd']

关于列表的可变性,可以通过一个更加形象的例子来说明:

>>> L3 = ['abc','def']

>>> L4 = [1,2,3]

>>> L5 = [L3,L4]

>>> L6 = [['abc','def'],[1,2,3]]

>>> L5

[['abc', 'def'], [1, 2, 3]]

>>> L6

[['abc', 'def'], [1, 2, 3]]

>>> L3.append(12345)

>>> L5

[['abc', 'def', 12345], [1, 2, 3]]

>>> L6

[['abc', 'def'], [1, 2, 3]]

通过以上例子可以更好地看出列表的可变性。尽管第一次构造后,L5与L6在IDLE中输出的信息是一致的,但是两者并不相同。由于L5是对两个列表L3,L4的引用,因此当L3发生变化时,L5随之变化而L6并不会有任何改变。这有时候会在程序设计时给我们带来很多麻烦,当然,也会带来很多好处。如果我们不期望发生一个被引用列表变化时影响到我们引用它的列表,那我们设计程序的时候最好采用列表拷贝的方式。如下:

>>> L1 = [1,2,3]

>>> L2 = [4,5,6]

>>> L3 = [L1[:],L2[:]]

>>> L4 = [L1,L2]

>>> L1.remove(3)

>>> L3

[[1, 2, 3], [4, 5, 6]]

>>> L4

[[1, 2], [4, 5, 6]]

以上示范中,L3的构造采用了列表的拷贝而L4的构造则是采用了引用。当L1发生变化时,拷贝不受影响但是引用随之变化。

列表元素的增加和删除:

上面的例子中,分别用到了append()以及remove()的方法,这两个方法分别是列表增加以及删除元素的内置方法。

列表的遍历:

如同元组,列表可以通过for循环来遍历每个元素成员,IDLE演示如下:

>>> L4 = [1,2,3,4,'abc','efd']

>>> for each_element in L4:

         print(each_element)

        

1

2

3

4

abc

efd

列表扩展:

这里扩展介绍一种Python中的一种设计方法,把函数作为函数的参数。代码示范1:

IDLE中执行:

>>> ================================ RESTART ================================

>>>

>>> Func1(L1,abs)

1

2.3

5

123

>>> Func1(L1,str)

1

2.3

5

-123

>>> Func1(L1,float)

1.0

2.3

5.0

-123.0

>>> Func2(L1,L2)

1

2.3

5

123

1

2

5

-123

1.0

2.3

5.0

-123.0

这在数据处理上确实是带来很多方便。但是,如果传入函数的接受参数超过一个,其实还有更好的实现方式:

map(func,L1),下面给出一段示例代码:

在IDLE中的执行结果:

>>> ================================ RESTART ================================

>>>

[124, 999, 54]

字典

如果接触过C语言或者Perl等,这种数据类型其实并不让人感到陌生。字典其实就是C或者Perl中的哈希,MATLAB中的map。Python中的字典示例:

>>> d1 = {'mon':1,'tue':2,'wed':3}

>>> d1

{'wed': 3, 'mon': 1, 'tue': 2}

>>> d1['wed']

3

字典元素的增加

>>> d1['thr'] = 4

>>> d1

{'thr': 4, 'wed': 3, 'mon': 1, 'tue': 2}

字典的遍历

>>> for each_element in d1:

         print(each_element)

thr

wed

mon

tue

>>> d1.keys()

['thr', 'wed', 'mon', 'tue']

>>> d1.values()

[4, 3, 1, 2]

字典元素的删除

>>> d1.pop('tue')

2

>>> d1

{'thr': 4, 'wed': 3, 'mon': 1}

通过for循环遍历,得到的其实是字典的key值。这与字典的keys()方法得到的结果是一致的。而通过values()的方法则可以得到字典的各个value。这两个方法得到的返回结果都是列表。

此外,字典的key可以是一种符合形式的数据,比如元组。继续以上的IDLE环境,通过操作示范一下:

>>> d1[(1,2,3)] = 'three values'

>>> d1

{'thr': 4, 'wed': 3, 'mon': 1, (1, 2, 3): 'three values'}

>>> d1[(1,2,3)]

'three values'

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1690_Python中的复数数据类型 的相关文章

随机推荐

  • STM32 中重定向printf 和 scanf

    uart c 如果使用 pragma import use no semihosting 则在MDK中不勾选use Microlib 当前代码直接重定向没使用 pragma import use no semihosting 故需要选择us
  • Ubuntu环境下Pixhawk原生固件PX4的编译

    Ubuntu下Pixhawk原生固件PX4的编译这个问题困扰了两天时间 xff0c 可能是博主脑力不够 xff0c 主要是环境搭建不起来 xff0c 主要原因应该是路径的原因 xff0c 最后在大师傅的帮助下还好成功将路径搭建好 xff0c
  • 远程连接虚拟机的Network error: Connection timed out问题

    MobaXterm远程连接虚拟机的Network error Connection timed out问题 我使用的是MobaXterm远程连接我使用VMware创建的虚拟机 更新一下 xff1a 如果出现这种问题 xff0c 极大可能是服
  • springboot项目接入天猫精灵

    springboot项目接入天猫精灵 最近工作需要使用到天猫精灵的语音功能 xff0c 大体是通过呼叫对应的 调用词 实现携带参数 xff0c 然后调用我项目中的接口 xff0c 以实现对应的业务 所以在此简单的记录下使用过程 实际上 xf
  • Lesson 9.2&9.3&9.4 黑箱:不可解释的深层神经网络&探索多层神经网络:层vsh(z)

    二 黑箱 xff1a 深层神经网络的不可解释性 首先从结构上来看 xff0c 多层神经网络比单层神经网络多出了 中间层 中间层常常被称为隐藏层 xff08 hidden layer xff09 xff0c 理论上来说可以有无限层 xff0c
  • UnicodeEncodeError: 'gbk' codec can't encode character ...

    使用Python写文件的时候 xff0c 或者将网络数据流写入到本地文件的时候 xff0c 大部分情况下会遇到 xff1a UnicodeEncodeError 39 gbk 39 codec can 39 t encode charact
  • 一文简单了解并构建DockerFile

    GreatSQL社区原创内容未经授权不得随意使用 xff0c 转载请联系小编并注明来源 GreatSQL是MySQL的国产分支版本 xff0c 使用上与MySQL一致 作者 xff1a 蟹黄瓜子文章来源 xff1a GreatSQL社区投稿
  • 头文件中定义和声明的问题

    头文件中定义和声明的问题 1 头文件中不可以放变量的定义 xff01 一般头文件中只是放变量的声明 xff0c 因为头文件要被其他文件包含 include xff0c 如果把定义放在头文件的话 xff0c 就不能避免多次定义变量 C 43
  • Apache中更改PHP版本型号

    如何对服务器PHP版本进行升级 xff0c 详看我另外一篇博文 xff0c 这篇文章我们将讲述如何在Apache中更改PHP版本型号 Step1 xff1a 查看Apache用的PHP什么版本 新建一个文档 xff0c 命名为info ph
  • 简述AGV通信接口标准-VDA5050

    引言 德国汽车工业协会 德语 xff1a Verband der Automobilindustrie e V 简称VDA xff0c 通过 其 34 VDA 5050 34 接口 xff0c 早在2019年起 xff0c 不同制造商的车辆
  • C语言结束输入(两种方法)

    方法1 xff1a 输入数据 while getchar 61 39 n 39 scanf 34 d 34 amp Data data i 43 43 61 Data 方法2 xff1a for i 61 0 i lt 100 amp am
  • OpenCV(项目)车牌识别3 -- 模板匹配

    目录 一 基础理论 1 思想 2 大致过程 二 详细过程 1 首先需要模板库 2 得到模板 3 原图限定大小 4 模板匹配 5 匹配所有子文件夹 xff0c 保存最佳得分 xff08 最匹配项 xff09 三 大致过程 xff08 细分类
  • PMP项目管理中的重要角色

    PMP及PMBOK有个大问题 xff0c 就是没有统一的角色职责及流程 xff0c 考试也是随意性很强 xff0c 这给考生带来很多困扰 一个管理体系 xff0c 首先是人员分工安排 比如 xff1a PRINCE2 xff0c 明确的组织
  • 书房再次升级啦~~

    国庆长假 xff0c 在家里面一顿折腾 xff0c 墙全部重新粉刷 xff0c 书房 卧室 客厅三种不同颜色 书房的颜色是当时在装饰城的展厅里面偷偷扣的墙皮 xff0c 在多乐士店色卡里面对出来的 xff0c 哈哈 ps 这篇日志的照片是用
  • 基于K近邻法的手写数字图像识别

    数字图像处理课程论文 题目 xff1a 数字图像识别 摘要 模式识别 PatternRecognition 是一项借助计算机 xff0c 就人类对外部世界某一特定环境中的客体 过程和现象的识别功能 xff08 包括视觉 听觉 触觉 判断等
  • Ubuntu 16.04升级内核到20.04

    一 首先需要从16 04 18 04 sudo mv etc apt sources list sudo mv etc apt sources list d list 1 改变源 xff08 粘贴下面这一段到终端并运行 xff09 cat
  • 互斥和二进制信号量的使用

    1 二进制信号量 semBCreate SEM Q FIFO SEM Q PRIORITY SEM EMPTY SEM FULL 有两个作用 xff1a xff08 1 xff09 任务间的互斥 xff0d xff0d 同一个任务获取和释放
  • 【C++】关于以下划线开头的变量名

    系 统头文件里将宏名 变量名 内部函数名用 34 34 开 头就是为了避免与用户用的名字冲突 因为当你 xff03 include 系 统头文件时 xff0c 这些文件里的名字都有了定义 xff0c 如果与你用的名字冲突 xff0c 就可能
  • 1689_MATLAB处理Excel文件提升篇

    全部学习汇总 xff1a GreyZhang g matlab MATLAB once used to be my daily tool After many years when I go back and read my old lea
  • 1690_Python中的复数数据类型

    全部学习汇总 xff1a GreyZhang python basic My learning notes about python github com 之前总结的知识中设计的数据类型有整形 浮点 字符串等 xff0c 这些类型表示的都是