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在使用时必须使用关键字参数进行引入
模式 | 描述 |
---|---|
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