干货|python基础知识总结
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
Python是一种面向对象的解释型计算机程序设计语言。它有着代码简洁、可读性强的特点。代码简洁是因为它把许多的复杂的操作封装起来,将C语言中麻烦的指针和内存管理对开发者隐藏起来,使得在开发过程中,无须在意这部分的细节。另外Python这们语言强制用户用缩进进行排版,若不好好排版,则代码编译无法通过,或者运行过程会出现错误。
Python程序的执行过程和C语言不一样,使用Python写的程序在运行过程中 Python解释器会把源代码转换为字节码,再由Python虚拟机来执行这些字节码。而C程序则是计算机直接执行由C源代码编译的机器指令。
在使用Python的时候需要留意你所使用的Python版本,因为Python2.X和Python3.X有较大的改动。最主要的是Python3默认编码为utf-8,并且Python2中的print语句变成了print函数。其他变动在此不一一说明。
有关Python的特点只需了解就好,这些在代码实战会体会到。
一、基础数据类型
Python是一门弱类型语言,变量使用前无需声明,变量名可以看作一种引用。Python的基本数据类型分为数字、字符串、列表、元组、集合、字典。
其中数字包括整型、浮点型、布尔型、以及复数。Python的整型数可以有无限精度,浮点数默认为double类型保留16位小数,如果你需要更高的精度,则可以使用decimal模块。在python中,布尔型为数字的一种,True 和 1等价,False和0等价,(你会发现True == 1这语句为真,且True+True的值等于2),复数的实部和虚部均为浮点数。
列表、元组、字典、集合、字符串是Python中经常会使用到的数据结构,这些数据结构的方法都要能熟练使用。
列表、元组、字符串是非常相似的,他们都是顺序存储结构,元素之间有固定的顺序,并且它们都可以用 + 和相同类型的数据类型拼接起来。他们的差别是:列表内的元素可以修改,元组和字符串是不可变数据类型,即元祖和字符串的元素不能修改(如果把每一个字符当成字符串的元素的话)。
其中元组和字符串的不可改变也不一样,如果对想修改字符串,等价新建新的字符串(字符串的是完全不能修改)。
而元组是不能修改元组内对元素的引用。当你的元组里嵌套了一个列表时,你发现列表内的元素可以修改,但是你不能把列表这个元素换成其他元素。因为元祖该位置保存着该列表的引用,该引用不能修改。修改列表内的元素并不会改变元组对该列表的引用。
除此以为,列表、元组、字符串都能用索引访问元素,可以使用切片操作,可以用for in 循环按顺序迭代元素。其中元祖的性能比列表的性能稍微高一点点,这在数据量大的时候才比较明显,但在机器学习中通常都是使用numpy的数组。
字符串的使用自不用说,列表往往使用来处理数据时使用(处理完直接append到列表里),元祖就比较少用到。有关字符串、列表的操作一定要熟练掌握。
字典记录了键值的映射关系,可以迭代,可以修改,但是字典没办法保证安装你添加顺序进行迭代。此外使用字典会比列表更占用内存,但字典的访问更快。
在使用字典的时候还有许多技巧,当你想判断某个键是否在字典里的时候,在数据量巨大的时候,用in操作会很慢,而如果你直接访问用键来访问,并将此语句放在try/except内,速度会明显提高(in操作相当于遍历查找,如果字典无此键,这需要遍历整个字典;但如果直接访问,就能利用哈希表的优点,迅速查找,如果找不到也会因为抛出异常而进入except语句块)。
集合也是一种无序无重复元素的数据结构,所以我们可以把列表转化为集合达到数据去重的效果,这是制作词袋经常使用的技巧。同时也要注意集合内存放的都是不可变对象。
有些时候我们还需要对数据进行拷贝操作,这时我们要注意是否需要深拷贝的情况。当列表、字典存在嵌套的时候,如果用浅拷贝或者切片。则会导致嵌套里面的列表或字典仍为同一个对象,一处修改导致同时修改的情况。这是应该使用copy模块的deepcopy方法来进行拷贝。
机器学习的操作对象是数据,所以以上的数据类型必须要能够熟练的运用。
二、循环
Python的循环简单易上手,while循环和C语言一样,但for in 循环就很像java的foreach循环(java foreach循环不能修改迭代元素,而Python的for in可以)。for in 循环在迭代列表、元组等可迭代类型非常方便。例:
>>>abc = ['a', 'b', 'c']
>>> for item in abc: print(item)
也可以用range用索引迭代:
>>> for index in range(len(abc)):print abc([index])
三、文件IO
在处理数据的时候,我们往往需要从文件中读取数据。所以文件IO操作必不可少的。
Python的文件操作很简单,只需用open打开文件
file = open(path,pattern)
由上可知,上面文件IO的模式和C的差不多,除此之外,有些时候还要设置编码等等。
read是一次性读完文件,但是当读取内容大于内存大小不能使用read。
readline和readlines都是逐行读取,但是readlines是一次性读取之后,每一行转为列表的一个元素。readlines比readline要快。
当使用write写入时,若写入的内容大于缓冲区,则会直接写入文件(一般会先写入缓存区)。writeline则是可以把列表当做参数写入。一般写入操作之后都应调用flush方法,把缓存区的内容写到文件去。
在完成文件IO之后要关闭文件,否则就会占用系统资源,可以用try/finally确保文件关闭,用with语句可以更方便些(with语句结束自动关闭文件)。
四、函数
Python中用def关键字来定义函数,格式为
def 函数名(参数):
函数参数:
接下来将详细将函数的参数类型,函数的参数有4种分别是:必选参数、默认参数、可变参数和关键字参数
必选参数:必选参数需要按照函数声明的顺序传入,和C语言的函数参数一样
默认参数:如果该参数没有传入,则传入默认取值
可变关键字:可变关键字就是传入的参数个数是可变的。
也可以传入一个列表或元组,在参数前加上*
关键字参数:关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个字典
也可以传入一个dict,在参数前加上**
在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
返回值:
函数可以有0个或多个返回值,直接return没有返回值实际上是返回了None,返回多个值时,上还是返回一个元组,元组可以对多个变量对应赋值。(其实就是序列解包)
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
干货|python基础知识总结相关推荐
- Python写入字典_干货|python基础知识总结
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 Python是一种面向对象的解释型计算机程序设计语言.它有着代码简洁.可读性强的特点. ...
- Python基础知识梳理(一)
Python基础知识梳理: 转载于:https://blog.51cto.com/10412806/2095116
- python基础知识资料-Python基础知识汇总
原标题:Python基础知识汇总 1.Anaconda的安装 百度Anaconda的官网,下载左边的Python3.X版本 然后是设置路径,最后给出Jupyter notebook.具体参考: 猴子: ...
- python基础知识资料-Python基础知识梳理 - 第02部分
本文是Python基础知识的第二篇, 主要是对内置对象类型的介绍, 涉及的类型如下表. 数字类型 在Python中, 数字并不是一个真正的对象类型, 而是一组类似类型的分类, 如整数和浮点数, 复数等 ...
- python语法基础知识总结-Python基础知识梳理 - 第01部分
在开始Python基础知识梳理前, 先安装下环境. 以下过程是在Linux操作系统, root用户下进行的, 主要安装了2.7版本的python, 和pip, ipython, virtualenv等 ...
- python笔记基础-Python基础知识
Python基础知识 安装Python mac 通过命令行brew install python3 或者下载对应版本安装包安装 linux 通过包管理器安装apt-get install python ...
- python基本语法规则-python基础知识——基本语法
在python基础知识这个系列中,准备罗列出我学习python的一些基础知识,包括:基本语法 控制语句 内置数据结构 模块和函数 字符串 文件处理 面向对象 异常处理 以前写机器学习算法喜欢使用Mat ...
- python基础知识整理-python爬虫基础知识点整理
首先爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 根据我的经验,要学习Python爬虫 ...
- python语言的单行注释以井号开头_推荐|零基础学习Python基础知识
原标题:推荐|零基础学习Python基础知识 Python是一种面向对象.解释型计算机程序设计语言.语法简洁清晰,强制用空白符作为语句缩进. Python具有丰富和强大的库,又被称为胶水语言.能把其他 ...
最新文章
- 脑电分析系列[MNE-Python-8]| 参考电极简介
- java 基本语法与流程控制_Java基础语法之控制流程
- 前端学习(2375):项目介绍结束
- Python 数据分析三剑客之 NumPy(三):数组的迭代与位运算
- bootstrap兼容ie8以下版本
- 问题 L: A+B Problem (IV) : Input/Output Practice 山东科技大学OJ C语言
- Recover through incarnations: RMAN-20208
- 我只能说,Spring Data REST真的很燥辣
- Structs2文件上传以及预览
- 第八章 - 轮廓 - 查找轮廓、表示轮廓、绘制轮廓
- python接入支付宝 40004 invalid-signature 错误原因: 验签出错
- 【图像分割】基于收缩系数的粒子群混合引力搜索算法多级图像阈值分割算法研究附matlab代码
- linux 硬盘错误,linux – 硬盘读取错误……停止?
- 这场乌镇互联网饕餮盛宴,大佬们都说了啥?
- python打印日历小项目
- Mysql高级查询语句练习
- 学习中的典型思维误区总结
- 【解决The package java.awt is not accessible】
- 项目实训(三)unity游戏场景的搭建
- qt获取”本地连接“的IP
热门文章
- 旷视推出鼻纹识别,用AI寻找丢失宠物
- 《中国人工智能ABC人才发展报告》发布,算法和应用类人才短缺
- AI是万能的吗?当前AI仍面临的难题是什么?
- Yann LeCun力挺前AAAI主席,批判深度学习的Marcus遭怒怼
- Lombok!代码简洁神器还是代码“亚健康”元凶?
- SpringBoot开发微信公众号
- Spring Boot 打包不同环境配置与 Shell 脚本部署
- SpringBoot 2.0 多图片上传加回显
- 我用Java+SeimiCrawler+Redis+ES+Kibana技术对数百万知乎用户进行了数据分析,得到了这些......
- 一次非常有意思的 SQL 优化经历:从 30248.271s 到 0.001s