Python自学教程8-数据类型有哪些注意事项
不知不觉,python自学教程已经更新到第八篇了,再有几篇,基本的语法就介绍完了。 今天来总结一下数据类型有哪些需要注意的地方。
元组注意事项
元组是另一种经常使用到的数据类型,看上去和列表差不多。它们之间的区别在于列表是一个可变的数据类型,而元组是不可变的。
#元组
a = (1, 2)
#列表
a = [1, 2]
使用列表会更灵活,而元组支持的操作更少,有的人会认为没有必要用元组,直接用列表就可以了。
但正因为元组不可变,限制了功能,从效率上来讲它会更加快一些,而且,当你不想让用户去修改这个数据的时候,用元组会更合适,数据相对来说更加安全,不容易出bug。
使用元组的时候一定要记得在元素的后面加逗号,当一个元组只有一个元素的时候,后面不打逗号,是不能表示成元组的,而是元素本身的类型。
a = (1) # 等于 1
a = (1,) #这才是元组
浮点数注意事项
在编程语言当中,浮点数的精度往往不能达到完全的精确,这会给我们编程带来一些问题,甚至呢可能带来很大的bug。比如说我们现在计算一个很简单的小数点的运算,0.1+0.2,大家可以先回答一下这个应该等于多少呢?
print(0.1 + 0.2)
很明显这是一个小学的数学题,但是呢,当我们交给Python去运算的话呢,我们得到结果并不是等于0.3而是等于
0.30000000000000004
这是计算机在表示十进制小数的时候会出现误差。
从直观的感受上看,这种精度好像造成不了太大的影响。但是,在对数据要求非常严格的情况下,这种误差会引发打的问题,尤其是在做测试的时候,如果你你的预期结果和实际结果都不相等,那么你测试用例肯定是不会通过的。
在操作银行、证券这类金融业务时,涉及到支付和钱的时候一定要有非常严格的精度控制。 此时,可以使用 decimal 模块来保持高精度,我们把需要操作的浮点数先转换成字符串,再作为参数传给 Decimal 类。
from decimal import Decimal
print(Decimal("0.1") + Decimal("0.2"))
# 0.3
除法注意事项
在进行除法运算的时候,一定要牢记:被除数是不能等于0的。
当你把0作为一个被除数的时候,程序是会报错的。
print(3 / 0)
列表注意事项
面试题当中列表问题出现的概率应该有80%以上,因为列表的操作非常频繁,而且比较容易出错,现在我们就来看一个经典问题:删除列表元素。
有一个列表如下,请删除列表当中的每一个元素,但是不能直接用clear方法。
names = ["九柄", "八柄", "七柄","六柄","五柄"]
按照条件反射,我们一般会写一个 for 循环,然后依次执行remove方法或者 pop 方法来删除元素。但是这样得到的结果是不对的,总有几个元素删除不掉。
for name in names:
names.remove(name)
print(names)
# ["八柄", "六柄"]
为什么会删不干净呢?最核心的原因是:删除掉一个元素之后,这个列表发生了变化。
第1次,我们取到的元素是索引为0的 “九柄”, 它被删掉了之后, 接下来去取索引为 1 的元素,因为“九柄” 已经被删除,所以索引为0的元素已经被替换成 "八柄", 索引为1 的元素则为”七柄“, 七柄被删,八柄跳过去了,没有被删除。
然后,取索引为 2 的数据,为 ”五柄“, ”六柄“ 又被跳过了,从而造成删除不干净的情况。
从这个例子当中我们得出一个结论,不要在for循环当中去修改列表删除列表或者增加元素,这样非常容易出 bug。那上面的问题如果我们想解决怎么办呢?在我们去操作一个列表的时候,我们最好是做一个备份,不直接去修改原来的列表。
for name in names[:]:
names.remove(name)
print(names)
可变类型和不可变类型
实际上大多数的可变类型虽然增加了灵活性,有更多的操作,但是更容易出bug。在我个人的编程过程当中,我会尽量使用不可变类型。
为了区分可变类型和不可变也行,我们举几个例子。
a = [1, 2, ("a", "b")]
此时,a 是列表,是可变类型,可以任意添加、修改其中的元素,比如把索引2的元素换成 c
a[2] = "c"
# [1,2,'c']
但是,不能改 ("a", "b")
当中的元素,因为它是个元组。
a[2][0] = "c" # 报错
总结
总的来说数据类型是难度比较低的内容,只有很多方法比较难记。在开始学Python的时候,可以从数据类型入手,这样比较容易增加信心,只要稍微努力一点,多记一些相关的方法,可以迅速上手写代码。
Python自学教程8-数据类型有哪些注意事项的更多相关文章
- Python自学教程1-安装pycharm和执行环境
Python虽然简单,但是很多没有接触过的学起来还是比较困难的.因此很多人会报班去学,我觉得不需要花那个钱,只要方向正确,加上核心知识点的提炼,自学一个月左右就能上手. 我尝试写下这个自学教程,只讨论 ...
- Python自学教程2:大牛们怎么写注释
在还没开始学代码前,就要先学会写注释.不会写注释的程序员会遭到鄙视和唾弃,甚至在工作中会被人穿小鞋.注释也不是随便写一下就行,用好注释还是有点讲究的. 注释有什么用? 注释(Comments)主要是向 ...
- Python自学教程5-字符串有哪些常用操作
任何编程语言,不管是Python.Java 还是 Golang, 字符串都是最重要的一种数据类型. 但是字符串的操作又很多,初学者经常毫无头绪,不知道从哪儿学起,也不知道哪些操作用得多,今天九柄就和你 ...
- Python自学教程7:字典类型有什么用
字典是Python中的一个重要操作,如果字典玩得顺,很多其他的数据类型就可以一通百通. Python字典的定义 字典使用一对大括号进行定义,键值对之间使用逗号隔开,键和值使用冒号分隔. 键必须是不可变 ...
- Python自学教程12-类和对象怎么用
Python是一门现代化的编程语言,也是一门面向对象的编程语言. 现代编程语言几乎都支持面向对象编程,面向对象编程是最有效的软件编写方法之一.你可以用类和对象来表示现实当中的任何的事物和行为. 编写类 ...
- Python 简明教程 --- 4,Python 变量与基本数据类型
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 任何一个人都会写出能够让机器理解的代码,只有好的程序员才能写出人类可以理解的代码. -- Marti ...
- [ Python入门教程 ] Python字典数据类型及基本操作
字典是Python中重要的数据类型,字典是由"键-值"对组成的集合,"键-值"对之间用逗号隔开,包含在一对花括号中.字典中的"值"通过&qu ...
- Python学习教程(一)自学资源分享
Python 可以用来做什么? 在我看来,基本上可以不负责任地认为,Python 可以做任何事情.无论是从入门级选手到专业级选手都在做的爬虫,还是Web 程序开发.桌面程序开发还是科学计算.图像处理, ...
- Python自学编程开发路线图(文中有免费资源)
Python核心编程 免费视频资源<Python入门教程>:http://yun.itheima.com/course/145.html Python 基础学习大纲 所处阶段 主讲内容 技 ...
随机推荐
- docker-compose 搭建 Prometheus+Grafana监控系统
有关监控选型之前有写过一篇文章: 监控系统选型,一文轻松搞定! 监控对象 Linux服务器 Docker Redis MySQL 数据采集 1).prometheus: 采集数据 2).node-ex ...
- 开发工具-MySQL下载地址
更新记录 2022年6月10日 完善标题. 商业版下载 商业版下载地址 https://edelivery.oracle.com/ 使用Oracle账号登录即可下载. 官方下载 https://dev ...
- .NET中获取Windows的常见路径
更新记录 本文迁移自Panda666原博客,原发布时间:2021年6月30日. 一.说明 每种平台都其预定义的规则,比如Windows平台有自己的规定.公司也有预定义的规章制度.那么在平台上开发和干活 ...
- .NET 6.0.6 和 .NET Core 3.1.26、Visual Studio 2022 17.2 和 17.3 Preview 2 和 .NET 7.0 Preview 5 同时发布
Microsoft 昨天发布了适用于 .NET 6.0.6 和 .NET Core 3.1.26.NuGet.Visual Studio 2019 和 Visual Studio 2022 17.2 ...
- 4.怎么理解相互独立事件?真的是没有任何关系的事件吗? 《zobol的考研概率论教程》
1.从条件概率的定义来看独立事件的定义 2.从古典概率的定义来看独立事件的定义 3.P(A|B)和P(A)的关系是什么? 4.由P(AB)=P(A)P(B)推出"独立" 5.从韦恩 ...
- BUUCTF-隐藏的钥匙
隐藏的钥匙 通过16进制打开发现flag,其中告知编码为base64,解密后加上flag{}即可 flag{377cbadda1eca2f2f73d36277781f00a}
- SAP APO - Architecture
SAP APO体系结构由多个组件组成-数据库,BI环境包含InfoCube和实时缓存. InfoCube是BI数据集市的一部分,实时缓存是您保留与计划和调度有关的所有数据的主要区域. 您可以在实时缓存 ...
- awk内置函数、外部变量
外部变量 ①获取外部变量 格式: awk '{action}' 变量名=变量值 ,这样传入变量可以在action中获得值. 示例: test='awk test'--day-5 外部变量 ①获取外部变 ...
- Java 集合常见知识点&面试题总结(上),2022 最新版!
你好,我是 Guide.秋招即将到来(提前批已经开始),我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你. 你也可以在网站(javaguide.cn)上在线阅读, ...
- IDEA 开发工具-插件{[转载]
00 idea 开发工具使用技巧 01 idea插件推荐-- 02 IDEA插件 03 IDEA值得推荐的20款优秀的插件 04 IDEA插件精选」安利一个IDEA骚操作:一键生成方法的序列图