Python学习心得与笔记分享

第一阶段

第六章 数据容器

列表(list)

特点

        可以容纳不同类型数据,支持重复元素,可以被修改,元素有顺序

基本语法

        基本用法:[]        变量=[元素若干(使用,隔开)]        空列表:变量=[],变量=list()

        支持嵌套

        下标索引:

                用于取出特定的元素

                语法: 列表[下标索引]        例如:_list[0]       

                正向索引 从左往右依次为0,…,n-1        反向索引 从左往右依次为n,…,-1

列表的相关操作

        方法:将函数定义为class(类)的成员,调用方式:list.方法名

        列表的常用方法:

编号 使用方法 作用

1

列表.index(元素) 查找指定元素的下标,找不到则输出ValueError报错
2 列表[下标]=值 修改特定位置(索引)的元素值

3

列表.insert(下标,元素) 在指定位置(索引)插入指定元素
4 列表.append(元素) 在列表最后添加元素
5 列表.extend(其他容器) 在列表最后添加其他数据容器内的元素
6 del 列表[下标] 删除该下标对应的元素
7 列表.pop(下标) 删除该下标对应的元素,可以返回值
8 列表.remove(元素) 删除列表内所选元素的第一个
9 列表.clear() 清空列表
10 列表.count(元素)

统计列表内所选元素个数

        len(列表) 可以统计列表内元素个数

        使用while和for循环对列表内的元素进行取出

元组(tuple)

特点

        可以容纳不同类型数据,支持重复元素,不可被修改,元素有顺序

基本语法

        基本用法:()        变量=(元素 使用,隔开)        空元组:变量=() 变量=tuple()

        如果元组内只有一个元素,那么要在该元素后再加上一个逗号(,),否则将不会是元组类型,将是字符串

        元组支持嵌套

        下标索引:

                用于取出特定的元素

                语法:元组[下标索引]        例如:_tuple[0]       

                正向索引 从左往右依次为0,…,n-1        反向索引 从左往右依次为n,…,-1

元组的相关操作

        元组.index(元素)        查找所选元素的下标

        元组.count(元素)        统计所选元素的个数

        len(元组)        统计元组内的元素个数

        使用while和for循环对元组内的元素进行取出

        不可以对元组内元素进行修改,否则会报错;但有特殊情况,当元组内嵌套有列表时,列表内的元素可以进行修改。

字符串(str)

        字符串是字符的容器,字符串内可以储存任意数量的字符

特点

        只可以储存字符串,支持重复元素,不可被修改,元素有顺序

基本语法

        基本用法:""

        下标索引:

                用于取出特定的元素

                语法:字符串[下标索引]        例如:_tuple[0]      

                正向索引 从左往右依次为0,…,n-1        反向索引 从左往右依次为n,…,-1

字符串的相关操作

        字符串的常用方法:

编号 使用方法 作用
1 字符串.index(字符串) 查找给定字符串的第一个匹配项
2 字符串.replace(str1,str2)

将字符串内的所有str1换成str2,

不会修改原字符串,生成的是一个新的字符串

3 字符串.split(字符串) 按选定的内容对原字符串进行切割,得到的是一个新的列表,而不会改变原字符串
4 字符串.strip(字符串) 移除首尾的所选字符串,所选字符串不会按照固定顺序进行,而是一个一个移除,默认值为空格
5 字符串.count(字符串) 统计字符串内所选字符串的数量

        len(列表) 可以统计列表内元素个数

        使用while和for循环对元组内的元素进行取出

        字符串无法被修改,操作得到只是一个新的字符串,或者字符串本身不变,得到的是其他形式的储存容器,如:split()分割后得到的是列表

集合(set)

特点

        可以容纳不同类型数据,不支持重复元素,可以被修改,元素无顺序

基本语法

        基本用法:{}        变量={元素 使用,隔开}        空集合:变量=set()

        不支持下标索引,因为集合无序

集合的相关操作

        集合的常用方法:

编号 使用方法 作用
1 集合.add(元素) 在集合中加入一个元素
2 集合.remove(元素) 在集合中删去一个元素
3 集合.pop() 在集合中随机取出一个元素
4 集合.clear() 清空集合
5 集合1.difference(集合2) 得到一个新集合,内含集合1和集合2的差集(集合1有但集合2没有的部分),原有的两个集合内容不变
6 集合1.difference_update(集合2) 在集合1中,删除集合2存在的元素,集合1被修改,集合2不变
7 集合1.union(集合2) 得到一个新集合,内含两个集合内的所有元素,原有的两个集合不会改变

        len(列表) 可以统计列表内元素个数

        while无法进行遍历,因为集合内元素无序,不支持下标索引,while无法使用;但是for循环的使用正常,可以进行遍历。

字典(dict)

特点

        可以容纳不同的数据类型(但是key不能为字典),不允许key的重复(value可以重复),可以被修改,元素无顺序

基本语法

        基本用法:{},但储存的元素是一个一个由:对应的        变量={key:value 用,分隔开}        空字典 变量={} 变量=dict()       

其中key和value对应的情况称为:键值对,可以使用key来搜索到value

        key不允许重复,重复时,新的key值会把旧的key覆盖

        只能通过key取到value,不能使用下标索引

                变量=字典[key] 可以取到key所对应的value

        字典允许嵌套,但是key不可以是字典 

字典的相关操作

        字典的常用方法:

编码 使用方法 作用
1 字典[key] 获取key对应的value值
2 字典[key]=value 字典中不存在key时,可以为字典添加键值对;字典中存在key时,可以更新键值对
3 字典.pop(key) 获取key对应的value值,并且将key所对应的键值对删除
4 字典.clear() 清空字典
5 字典.keys() 获取字典内的所有key

        len(列表) 可以统计列表内元素个数

        while无法进行遍历,因为字典无法使用下标索引;但for可以对字典进行遍历,可以直接对字典进行遍历,也可以使用字典.keys()获取字典内所有的key后进行遍历

总结

数据容器分类

是否支持索引(是否有序):

        支持(有序):列表、元组、字符串(序列类型)

        不支持(无序):集合、字典(非序列类型)

是否支持重复元素:

        支持:列表、元组、字符串(序列类型)

        不支持:集合、字典(非序列类型)

是否支持修改

        支持:列表、集合、字典

        不支持:元组、字符串

列表(list) 元组(tuple) 字符串(str) 集合(set) 字典(dict)
元素数量 支持多个 支持多个 支持多个 支持多个 支持多个
元素类型 任意 任意 仅字符 任意

key:value

key:不是字典

下标索引 支持 支持 支持 不支持 不支持
重复元素 支持 支持 支持 不支持 不支持
可修改性 可修改 不可修改 不可修改 可修改 可修改
数据有序 有序 有序 有序 无序 无序
使用场景 可修改、可重复的数据 不可修改、可重复的数据 一串字符 不可重复的数据 以key检索value
数据容器通用功能

都支持遍历操作

        全部数据容器都支持for循环遍历

        列表、元组、字符串支持while循环;集合、字典不支持while循环,因为他们不支持下标索引

功能 描述
for循环 遍历容器(字典是遍历key)
max() 容器中最大的数据
min()

容器中最小的数据

len()

统计容器内元素数量

list() 转换为列表
tuple() 转换为元组
str() 转换为字符串
set() 转换为集合
sorted(序列,[reverse=True])

排序,reverse=Ture表示降序,得到一个排好序的列表;默认为升序

第七章 函数进阶

函数的多返回值

多个返回值

        按照多返回值的顺序,写出多个变量按顺序接收对应的返回值

        变量之间用,隔开

        支持不同类型的数据返回值

例子

def text_return():

        return 1,2

x,y=text_return():

print(x)

print(y)

函数的多种传参方式

位置参数

        调用函数时,根据函数定义的参数位置来传递函数

关键字参数

        函数调用时可以通过“键=值”形式传递参数

注意:

        关键字传参可以不按照顺序

        关键字传参和位置传参可以混用,但要将位置传参写在最前面并按序排列

缺省参数

        又叫默认函数,用于定义函数,也为函数提供默认值(在函数定义和调用时,所有的参数必须在默认参数之前)

        当调用函数时,不给予新的参数值时,将使用默认值

不定长参数

        又叫可变参数,用于调用函数数量不确定的情况(包括不传参的情况)。

不定长函数类型:

        位置传递

                定义时,变量命名为“*args”,用于表示该函数值的不确定。

                传进的所有参数都会被该变量args收集,将按照传进函数的位置组成一个元组,args是元组类型

        关键字传递

                定义时,变量命名为“**kwargs”

                参数是“键=值”的情况时,所有的键值都会被kwargs接受,组成一个字典储存

匿名函数

函数作为参数传递

        与数字、字符串、字典、元组、列表等类型的数据相同,函数本身可以作为一种参数传入另一个函数

        这种形式是计算逻辑的传递,而非数据的传递,他拥有计算的能力。任何逻辑都可以自行定义并作为函数传入

lambda匿名函数

        函数的定义:

                def关键字,可以定义带有名称的函数,这类函数可以基于名称重复使用

                lambda关键字,可以定义无名称的匿名函数,这类函数只能临时使用一次

        匿名函数的语法

                lambda 传入参数:函数体(一行代码)

                        lambda是关键字,用于表示定义匿名函数

                        传入参数表示匿名函数的形式参数,如:x,y表示接收两个形式参数

                        函数体:就是函数的执行逻辑,要注意:只能写一行,无法写多行代码

第八章 Python文件操作

文件的编码概念

文件编码

        计算机储存文本文件是通过使用编码技术(密码本)将文字内容翻译成0和1存入

编码技术:

        翻译的规则,记录了将文字翻译为二进制或者将二进制翻译为文字。计算机中有许多可用编码,如:UTF-8、GBK、Big5等,不同的编码翻译出来的结果也不同

        UTF-8为目前全球通用编码

查看编码规则:

        windows自带笔记本,打开文件后即可查看

文件的读写操作

文件的概述

        读取文件的步骤:打开文件、读写文件、关闭文件

打开文件

        在Python中,使用open函数可以打开一个存在的文件或者新建一个文件

语法:

        open(name,mode,encoding)

        name:要打开的文件名的字符串(可以包括文件所在的路径)

        mode:设置文件的(访问)模式:只读、写入、追加等

        encoding:编码格式(推荐使用UTF-8)

                encoding在使用时必须使用关键字参数进行引入

mode常用的三种基本访问模式
模式 描述
r 以只读方式打开文件。文件的指针会放在文件的开头。是默认模式
w 打开一个文件只用于写入。如果文件已经存在,则会从头开始编辑文件,而原有内容将被删除;若文件不存在,则会生成一个新的文件。
a 打开一个文件进行追加内容。若文件存在,新的内容将被追加至已有内容中;若文件不存在,则会生成一个新的文件进行写入。
读文件
编码 使用方法 作用
1 文件对象.read(num) 读取文件数据, num表示要从文件中读取的数据长度,单位为字节。未传入num,默认为读取所有数据
2 文件对象.readlines() 以行为单位对整个数据进行一次性读取,并且返回的是一个列表,其中每一行的数据是一个元素 
3 文件对象.readline() 一次读取一行数据
4 文件对象.close() 关闭文件对象,关闭文件的占用。如果不使用该语法,Python将一直运行该文件
5 with.open()as f 可以完成文件的打开和自动关闭

        在读取时,要注意,一个程序内每次读取都会改变指针位置,每次操作都是按顺序地依次读取,若指针在文件末尾,两个语法可能无法读到任何数据

for循环读取文件行

        for lines in open(name ,mode,encoding)

                print(lines)

        每一个lines临时变量,记录一行文件数据

文件的写入操作

        写文件

        mode为w

打开文件、文件写入,内容刷新

        文件=open(name,mode,encoding)

        文件名称.write()

        文件名称.flush()

注意:

        直接使用write语言不能将内容写到文件中,而是积攒在程序的内存中,称之为缓存区;当调用flush语言的时候,内容会真正写入文件。这样做是为了减少硬盘调用次数,统一完成编写后再加入硬盘中。

        追加写入

        mode为a

        文件=open(name,mode,encoding)

        文件名称.write()

        文件名称.flush()

第九章 Python模块、异常与包

异常

了解异常

异常:指的是代码运行出现问题,即BUG,导致无法运行

捕获异常的原因:当异常出现的时候给予选择,不会使整个程序都停止运行

基本语法

捕获常规异常

        try:

                可能出现异常的代码

        except:

                如果出现异常执行的代码

捕获指定异常

        try:

        except 异常名 as 指定名:

捕获多种异常

        try:

        except(异常名,使用;分隔开):

捕获全部异常

        选择捕获常规类型即可

        在捕获指定异常的类型中,将异常名变为Exception

else与finally

        try:

        except:

        else:

                未出现异常时执行的代码

        finally:

                不管是否出现异常都执行的代码

异常的传递

        异常具有传递性

        当第一个函数出现异常且没有处理异常时,异常会传递至下一个函数

        如果一直没有捕获异常那程序将报错

Python模块

模块

了解python的模块

        模块(module),是一个Python文件,以.py结尾,模块能定义函数、类、变量,模块内也能包含可执行的代码,可以通过模块实现各种功能

基本语法

模块的导入方式

        [from 模块名] import [模块\函数\类\变量\*] [as 别名]

        *表示导入模块内的全部内容

                import 模块名

                import 模块1,模块2

                模块名.功能名()

                from 模块名 import 功能名

                功能名()

                from 模块名 import *

                模块定义别名:import 模块名 as 别名

                功能定义别名:import 模块名 import 功能 as 别名

自定义模块

        在一个文件中写好函数,在另一个文件中可以按照上述方法,使用该文件的文件名进行使用

        当导入多个模块时,且模块内有重名功能,当调用这个重名功能时,调用到的最新的模块功能,后导入的模块会覆盖之前的模块

__main__变量

        if __name__=='__main__'

                函数

        只有当程序是直接执行的才会进入if内部,如果是被导入的则无法进行

__all__变量

        当文件模块中含有__all__变量的时候,from 变量名 import *调用时,只能调用该变量内的部分,无法调用全部的文件模块

Python包

自定义包

Python包

        指的是一个文件夹,其中包含了多个模块文件,本质上还是Python模块

        __init__.py存在于文件夹时称为包,不存在时只是文件夹,在__init__.py中可以使用__all__对其他模块进行操作

导入包

        import 包名.模块名

        包名.模块名.目标

第三方包

        非官方发行的Python包,Python本身并不内置这写包,可以通过pip下载

        命令提示符中输入pip install 包名称,即可快速安装包

        pip是连接国外的网站进行包的下载,速度较慢,可以使用国内网址加快速度,方式为:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称

第十章 Python折线图的开发

json数据格式

json

        是一种轻量型的数据交互格式,可以按照指定的JSON格式去组织和封装数据

        本质上是一个带有特定格式的字符串

主要功能:

        是一个在各个编程语言中流通的数据格式,负责不同编程语言直接的数据传递和交互

基本语法

        变量名={字典}        变量名=[{字典}]

        json在python中,本质上是一个字典或者元素都为字典的列表,json和python之间可以实现无缝转换

json格式数据转化:

        通过python中的json模块进行

        json.dumps(变量名)        将python转变为json

        如果有中文,可以加上 ensure_ascii=False 来确保中文的正确翻译

                变量名=json.dumps(变量名)

                变量名=json.dumps(变量名 ensure_ascii=False)

        json.loads(变量名)        将json转变为python

                变量名=json.loads(变量名)

pyecharts模块

pyecharts

        制作数据可视化效果图的辅助模块,本体为Echarts(一个由百度开发开源,制作数据可视化的框架)

官网 pyecharts.org        画廊功能网站http://gallery.pyecharts.org/拥有丰富的图表代码

使用
# 导入包
from pyecharts.charts import Line
# 创造折线图
line=Line()
# 加入x、y轴数据
line.add_xaxis(["a","b","c"])
line.add_yaxis("数值",[30,20,10]
# 生成图表,利用render语法,得到文件形式
line.render()

以此可以得到一个图表文件,在此文件中,可以利用浏览器打开,打开后即可查看图表

注意:不要忘记关闭文件 文件名.close()

配置选项

系列配置选项

        针对具体的轴数据进行配置

全局配置选项

        针对图像的通用配置(如:标题、图例、工具箱)进行设置

        set_global_opts方法可以进行全局配置,可以在官网pyecharts.org上找到具体的操作方法、相关语法等等

数据处理

复杂json数据梳理

通过网站ab173.com懒人网站对数据进行梳理

处理数据

1.打开文件位置

2.处理不符合json规则的数据部分

3.将文件利用 变量名=json.loads(变量名)转换为python形式

4.依照梳理的层级关系,使用字典获取value的方式及列表获取数据的方式,来获得数据

5.逐级获取数据,取到所需要的x、y轴数据

6.生成折线图

第十一章 Python地图可视化

基本使用

基本使用方法

同折线图相近,依靠pyecharts制作可视化地图

设置变量、准备地图

map = Map()

设置数据

data=[

        (元组)

]

添加数据

map.add("自定地图名称",data,"选择的地图的名称")

绘制地图

map.render()

设置全局选项

map.set_global_orgs(

)

网站ab173.com中,前端选项中有一个RGB对照表,可以对照颜色

第十二章 Python动态柱状图

基础柱状图

基本语法

        Bar()

与上文所述两种图标方法基本一致

基本操作

反转柱状图

        变量名.reversal_axis()

        以此可以反转x、y轴

改变数据位置

将数据位置变为柱状图右侧

        label_opts=LabelOpts(position="right")

基础时间柱状图

时间线

本质上为x的时间轴,x轴的每个点上都有一个图像与之对应

变量名=Timeline()

在x轴建立一个图像,多个图像的结合即为时间线

自动播放

变量名.add_schema(

        play_interval=1000        # 自动播放的时间间隔,单位为毫秒

        is_timeline_show=True        # 是否在自动播放的时候显示时间线

        is_auto_play=True        # 是否自动播放

        is_loop_play=True        # 是否自动循环播放

)

时间线设置主题

from pyecharts.globals import ThemeType

timeline=Timeline(

        {"theme":颜色编号})

列表的sort方法

基本语法

列表.sort(key=选择排序依据的函数,reverse=True/False)

        参数key表示要求传入一个函数,将列表的每一个元素都传入函数中,返回排序的依据

        参数reverse表示是否反转排序,True表示降序,False表示升序

使用sort

def形式(带名的函数形式)

        def choose_sort_ket(element):

                return element[1]

element[1]含义为依靠第二个数据进行排序

lambda形式(匿名的函数形式)

变量名.sort(key=lambda element:element[1],reverse=True)

作者:2401_87217652

物联沃分享整理
物联沃-IOTWORD物联网 » Python学习心得与笔记分享

发表回复