keil obj 文件 结构_【Python】数据分析前的入门教程 Python For Everybody P2:数据结构...
- 这是密歇根大学课程Python For Everybody总结的P2部分。课程总结P1部分的地址如下:
P1: 零基础程序设计(Python 入门)
carolinezhq:【Python】数据分析前的入门教程 Python For Everybody P1:零基础程序设计zhuanlan.zhihu.com
P2: Python 数据结构
P3: 使用 Python 访问网络数据
P4: Python 数据库开发
P5: 毕业项目:使用Python获取并处理数据,并用可视化方式展现数据
2. 编程包含两方面,一是Algorithms算法:解决问题的一系列规则/步骤;二是Data Structures数据结构:在电脑上组织数据的方式。
P2部分的主要内容就是Python的数据结构:列表、字典与元组,以及怎么用它们来进行文件处理。P2总体逻辑结构上我动得还挺多的,欢迎小伙伴交流,点赞和收藏呀,我还会持续更新的~
C6 String字符串
1. str.method()字符串方法
- 字符串方法: string library里处理字符串的一系列内置函数。
- str.method()返回修改后的新字符串,但是并不改变原字符串
- 查看字符串可用方法:dir(str)
常用字符串方法
*whitespace空白:所有不显示的space/tab/newline
2. 操作字符串:长找分合换
C7 Files 文件
1. File handle文件句柄
- 文本文件是由行组成的,每一行结尾都有一个newline character换行符 n,n是看不见的字符,其类型为str,是一个字符而不是两个,len("n")结果为1
- filehandle是open()函数返回的变量,用于按行操作文件,需为filehandle命名,print(filehandle)不显示文章实际内容
- 可以将文件句柄视为一个字符串序列a sequence of strings,文件中每一个以“n”结尾的行都是这个序列中单独的字符串。
2. 按行处理文件
- 这种处理方法将每一行当做一个str
1) 打开文件open() 函数
fhandle=open(filename)
#或者
fhandle=open(filename,mode)
# mode可省。'r'表示只读;'w'表示编辑。不要忘记引号!
2) 对文件进行按行打印/对行计数/查找行
fhandle=open(filename)
for line in fhandle:line=line.rstrip()statement
- 用str.rstrip()处理多余的n:文本每一行本身后面就有一个n结尾,在打印的时候由于for循环,会在后面自动再加一个n,所以打印出的结果行中间穿插有空行。用line=line.rstrip()删去n。这是一个非常常用的代码
- 在statement做文章,可以完成对问文档按行打印/对行计数/查找行(可能会用到count=count+1计数;str.startswith()筛选行、continue跳过不需要的行、用in查找包含某字符串的行等)
3. 把文件视为一整个字符串进行处理
- 这种方法将整个file当做一个str(newline和其他符号也包括在内),因此不适用于过大的文件;如果文件过大,如几百万行,还是按行读比较好
1)读取文件filehandle.read()方法
fhandle=open(filename)
strname =fhandle.read()
statement
2) 利用statement完成按字符打印/文本字符计数/查找字符(和C6对str的操作一致)
- 按字符打印:print(strname)
- 文本字符计数:直接用len(strname)计数文件有多少字符(这样会计入所有的字符,比如n)。
- 查找字符:切片。print(strname[位置1:位置2])打印切片(实际上位置1、2并不好找)
C8 List列表
1. 列表
1) list有序、可变mutable
- 形式: 中括号+逗号 listname=[a,b,c]
- 列表里的元素可以是Python里的任何object对象,甚至是其他列表;列表可以为空[]
- 字符串immutable不可变,不能改变字符串的内容,若需改动,需重新赋值;列表mutable可变,用索引操作符可以改变列表里的元素。
#创建list
listname=list()
#或
listname=[]#修改列表元素
list[位置]=newobj
2)range(n) 返回由0到n-1的整数数字构成的迭代对象
- Python 3中range(n)函数返回迭代对象range(0,n)而不是列表;把迭代对象放在像list这样的迭代器里面,才能成为列表
print(range(5)) #range(0,5)
print(list(range(5))) #[0,1,2,3,4]
3) list与for循环
for obj in list:statement
#或者
for i in range(len(list)):statement
2. 列表函数及list.method()列表方法
1)针对list的内置函数:
- min(listname)/max(listname)/sum(listname)
求平均数时,循环的两种写法,右边在计算之前要把所有数据存起来,更占内存。
2)list.method()列表方法
- 查看列表可用方法:dir(list)
常用列表方法
list.append(obj) 在列表末尾添加元素
- 可添加各种数据类型/数据结构,但是一次只能添加一个元素(列表实参)
- 字符串记得加引号
- 注意:给列表添加元素时,list=list.append(obj)是错误的,会返回None;list.append(obj)就可以直接改动列表本身,print(list)直接就是新列表。相比之下,由于str不可变,str.method()不改变原有字符串,需要用赋值的方式str=str.method()替换旧变量才能起到改变的效果。
3.操作列表:长找分合换
4.str转list:str.split()方法
listname=list()
listname=str.split()
#默认分隔符为whitespace(space/tab/newline)#或者自己定义分隔符delimiter是什么
listname=list()
listname=str.split(delimiter)
实例:对于一个长字符,想取出其中的一段字符串
- 法1:find找出首尾位置1、2;str[位置1,位置2]切片
- 法2:str.split()利用特殊分隔符str转list;list[位置]索引
C9 Dictionary字典
1.字典dictionary:python最强大collection
- 存在于很多语言中,只是名字不一样。如perl/php: associative arrays关联数组。字典可改,无序,靠key进行索引。
- 字典的组成Dictionary Literals(Constants):curly braces花括号+a list of keys: values pairs。基本形式dictname={key1: value1,key2: value2}。
创建空字典
dictname=dict()
#或者
dictname={}
创建字典
dictname={key1: value1,key2: value2,…}
#或者
dictname[key1]=value1
dictname[key2]=value2
…
向字典里添加元素
dictname[newkey]=newvalue
#如果是写了已经有的key,就变成修改该key的键值了
- 字典里的1)value键值不需要唯一;而键必须保持唯一,如果同一字典内添加的键出现了重复,后面的键值会替换前面的键值,最终只保留最后一个键值;2)值可以取任何数据类型;但键必须是不可变的,如字符串,数字或元组,键不能取列表。
2. 常用dict.method()字典方法
3.操作字典:长找换
4. 实例:统计文件中每个词出现的频数
1)用dic[obj]=dic.get(obj,0)+1一次性完成计数和赋值(常用idiom)
dic=dict()
for obj in list:dic[obj]=dic.get(obj,0)+1
print(dic)
#注意:由于字典是无序的,所以最终统计出来的词频也是无序的。
2)实例:统计文件中出现次数最多的词及其频数(C10利用元组的比较来为无序的字典排序,蓝色部分会更加精简)
C10 Tuples元组
1. 定义
- Tuples元组有序不可更改。基本形式是圆括号+逗号隔开,
tuplename=(obj1, obj2, obj3…)
- tuples and assignment元组可以同时给多个对象赋值(注意赋值之后元组不能改!)。可以把元组放在赋值符号的左边(python 特别好的功能),甚至可以省略括号。下面例子要保证赋值左右元素数量相等
# 元组可以同时给多个对象赋值
a,b,c,d=(2,3,4,5)
print(c) #4
#2,3,4,5直接就一对一赋值给了a,b,c,d
- tuples的出现是为了提升效率,它们储存空间小,访问速度快。如果只是想储存一个list,看一下丢掉,用tuple更好。
2. 操作元组
3. 利用元组的可比性给字典里的元素排序
1)元组有可比性
- 从左边开始,只要有一对对应位置的元素满足条件,就返回True,后面的元素根本不比较。如果第一对元素结果为False,就继续比较下一对元素,以此类推,直到返回True就立刻停止比较。
- 字符串的比较:如Sally和Sam开始Sa一样,但是l在m前面,所以'Sally'<'Sam'。只对比到有第一个明确的答案出现就停止
2)sorted(iretable)函数 vs. list.sort()方法
sorted(iretable) #默认False升序
#或者
sorted(iretable,reverse=False升序/True降序)
- sorted(iretable)函数适用于所有可迭代变量;而list.sort()方法仅使用于列表
3) 利用tuples的可比性和sroted()函数给字典里无序的元素排序
实例:求出文件里出现频数前10的词及其频数(P2所有章节代码综合应用)
- 注意top10比的是元组(value,key),和dict里面的元组中的元素顺序相反
- list comprehension列表推导式
上面C10部分对应的代码还有列表推导式的写法:更短,执行起来更高效
keil obj 文件 结构_【Python】数据分析前的入门教程 Python For Everybody P2:数据结构...相关推荐
- keil obj 文件 结构_OBJ文件格式详解
OBJ文件是Alias|Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种标准3D模型文件格式,很适合用于3D软件模 ...
- keil obj 文件 结构_3D中的OBJ文件格式详解
常见到的*.obj文件有两种:第一种是基于COFF(Common Object File Format)格式的OBJ文件(也称目标文件),这种格式用于编译应用程序:第二种是Alias|Wavefron ...
- keil obj 文件 结构_keil下的STM32程序开发部署(一)
买一块 STM32的学习版很重要,虽然STM32的成本不足5元,但是对应的接口GPIO输出到不同的硬件连接,如果完全自己做的话还是比较大的工程,且意义有限. 首先下载keil编译器,这个和STM配合比 ...
- 如何自学python数据分析-『』python数据分析该怎么入门呢?
用python学数据分析难吗? 数据方向的薪资待遇还是比较高的,而且趋势也比较明显.随着据的落地应用,数据分析将有广泛的发展前景,未来广大的传统行业也将陆续释放出大量的数据分析岗位 通过Python来 ...
- 视频教程-Python数据分析案例实战 视频课程-Python
Python数据分析案例实战 视频课程 计算机硕士,多年工作经验,技术和产品负责人. 多年推荐系统/NLP/大数据工作经验. 负责公司多个AI项目产品落地,包括文本分类.关键词抽取.命名实体识别.对话 ...
- unix 存储空间不足 无法处理此命令_大数据分析命令行使用教程
在与数据科学紧密联系的计算机科学领域,像开发人员一样控制计算机是一项非常宝贵的资产.Unix命令行界面(CLI;您还将看到它称为终端或bash,shell等),它使我们能够执行更多操作. 因此,我们推 ...
- qpython3绘图_比Excel制图更强大,Python可视化工具Altair入门教程
比 Excel 制图更强大,Python 可视化工具 Altair 入门教程 数据转化成更直观的图片,对于理解数据背后的真相很有帮助.如果你有这方面的需求,而且还在使用 Python,那么强烈推荐你试 ...
- 视频教程-Python全栈开发入门课-Python
Python全栈开发入门课 前百度资深大数据工程师,现在爱奇艺推荐算法架构师,对python使用7年,具备大数据.机器学习.深度学习.推荐算法等多领域的技术能力 裴帅帅 ¥29.00 立即订阅 扫码下 ...
- 笔记本电脑下载python视频教程-Python的Jupyter Notebook入门教程
适用于Python的Jupyter Notebook入门教程 在下面的教程中,将指导您完成安装Jupyter Notebook的过程.同时,我们将探索Jupyter Notebook的基本功能,通过尝 ...
最新文章
- NSArray和NSDictionary的混合
- QT:触摸屏支持手指触摸,增加touch事件touchevent,记录前后touch坐标并处理
- SSh结合Easyui实现Datagrid的分页显示
- 37. Sudoku Solver **
- 安卓加载asset中的json文件_Android解析Asset目录下的json文件
- 速度挑战 - 2小时完成HTML5拼图小游戏
- 提高设计档次的8个方法
- 【python】MAC链接oracle
- springboot2集成hbase2环境搭建
- [复杂网络博弈] 第二章 演化博弈动力学基础
- 经过路由无法找到计算机,共享打印机找不到对方电脑解决方法
- The destination is read-only
- 黑镜成真!3分钟看懂马斯克直播脑机接口,芯片植入猪脑,活猪演示
- 【Pytorch】基于卷积神经网络实现的面部表情识别
- 华为桌面云虚拟机卸载VM Tools工具计算机蓝屏开机不了-完美解决
- Cobalt Strike Aggressor Script
- 在.net里编写Windows Service
- MT6572 拔掉充电器充电图标异常
- Long.valueOf 与 Long.parseLong的区别
- json文件批量转为txt文件
热门文章
- Maven知识点简要
- Ubuntu 14.04 安装 Sublime Text 3
- 正则表达式(overall)
- Jquery学习笔记:利用find和children方法获取后代元素
- php分享十五:php的数据库操作
- 解决“The type initializer for'Oracle.DataAccess.Client.OracleConnection' threw an exception ”异常...
- 10个优秀的 Web UI库/框架 详细出处参考:http://www.jb51.net/web/22251.html
- js prototype
- QTableWidgetble自定义表头排序设置
- 我国人工智能专利申请量去年超3万件,广东领先