1. 这是密歇根大学课程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:数据结构...相关推荐

  1. keil obj 文件 结构_OBJ文件格式详解

    OBJ文件是Alias|Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种标准3D模型文件格式,很适合用于3D软件模 ...

  2. keil obj 文件 结构_3D中的OBJ文件格式详解

    常见到的*.obj文件有两种:第一种是基于COFF(Common Object File Format)格式的OBJ文件(也称目标文件),这种格式用于编译应用程序:第二种是Alias|Wavefron ...

  3. keil obj 文件 结构_keil下的STM32程序开发部署(一)

    买一块 STM32的学习版很重要,虽然STM32的成本不足5元,但是对应的接口GPIO输出到不同的硬件连接,如果完全自己做的话还是比较大的工程,且意义有限. 首先下载keil编译器,这个和STM配合比 ...

  4. 如何自学python数据分析-『』python数据分析该怎么入门呢?

    用python学数据分析难吗? 数据方向的薪资待遇还是比较高的,而且趋势也比较明显.随着据的落地应用,数据分析将有广泛的发展前景,未来广大的传统行业也将陆续释放出大量的数据分析岗位 通过Python来 ...

  5. 视频教程-Python数据分析案例实战 视频课程-Python

    Python数据分析案例实战 视频课程 计算机硕士,多年工作经验,技术和产品负责人. 多年推荐系统/NLP/大数据工作经验. 负责公司多个AI项目产品落地,包括文本分类.关键词抽取.命名实体识别.对话 ...

  6. unix 存储空间不足 无法处理此命令_大数据分析命令行使用教程

    在与数据科学紧密联系的计算机科学领域,像开发人员一样控制计算机是一项非常宝贵的资产.Unix命令行界面(CLI;您还将看到它称为终端或bash,shell等),它使我们能够执行更多操作. 因此,我们推 ...

  7. qpython3绘图_比Excel制图更强大,Python可视化工具Altair入门教程

    比 Excel 制图更强大,Python 可视化工具 Altair 入门教程 数据转化成更直观的图片,对于理解数据背后的真相很有帮助.如果你有这方面的需求,而且还在使用 Python,那么强烈推荐你试 ...

  8. 视频教程-Python全栈开发入门课-Python

    Python全栈开发入门课 前百度资深大数据工程师,现在爱奇艺推荐算法架构师,对python使用7年,具备大数据.机器学习.深度学习.推荐算法等多领域的技术能力 裴帅帅 ¥29.00 立即订阅 扫码下 ...

  9. 笔记本电脑下载python视频教程-Python的Jupyter Notebook入门教程

    适用于Python的Jupyter Notebook入门教程 在下面的教程中,将指导您完成安装Jupyter Notebook的过程.同时,我们将探索Jupyter Notebook的基本功能,通过尝 ...

最新文章

  1. NSArray和NSDictionary的混合
  2. QT:触摸屏支持手指触摸,增加touch事件touchevent,记录前后touch坐标并处理
  3. SSh结合Easyui实现Datagrid的分页显示
  4. 37. Sudoku Solver **
  5. 安卓加载asset中的json文件_Android解析Asset目录下的json文件
  6. 速度挑战 - 2小时完成HTML5拼图小游戏
  7. 提高设计档次的8个方法
  8. 【python】MAC链接oracle
  9. springboot2集成hbase2环境搭建
  10. [复杂网络博弈] 第二章 演化博弈动力学基础
  11. 经过路由无法找到计算机,共享打印机找不到对方电脑解决方法
  12. The destination is read-only
  13. 黑镜成真!3分钟看懂马斯克直播脑机接口,芯片植入猪脑,活猪演示
  14. 【Pytorch】基于卷积神经网络实现的面部表情识别
  15. 华为桌面云虚拟机卸载VM Tools工具计算机蓝屏开机不了-完美解决
  16. Cobalt Strike Aggressor Script
  17. 在.net里编写Windows Service
  18. MT6572 拔掉充电器充电图标异常
  19. Long.valueOf 与 Long.parseLong的区别
  20. json文件批量转为txt文件

热门文章

  1. Maven知识点简要
  2. Ubuntu 14.04 安装 Sublime Text 3
  3. 正则表达式(overall)
  4. Jquery学习笔记:利用find和children方法获取后代元素
  5. php分享十五:php的数据库操作
  6. 解决“The type initializer for'Oracle.DataAccess.Client.OracleConnection' threw an exception ”异常...
  7. 10个优秀的 Web UI库/框架 详细出处参考:http://www.jb51.net/web/22251.html
  8. js prototype
  9. QTableWidgetble自定义表头排序设置
  10. 我国人工智能专利申请量去年超3万件,广东领先