Python可视化
JSON数据格式定义
JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据
JSON本质上是一个带有特定格式的字符串。
作用为了让不同的语言都能够相互通用的传递数据,JSON就是一种非常良好的中转数据格式。
Python中数据结构和JSON的关系
python中的字典转成字符串就是JSON
python中的列表(列表中的元素是字典)转成字符串就是JSON
Python数据和Json数据的相互转换Python数据->JSON数据(dumps())
ensure_ascii=False表明不使用ASCII去转换它,而是把它内容直接输出出去。
# 导入模块import json# 准备列表,列表中的每一个元素都是字典,将其转换为JSONdata = [{'name': 'Tom', 'age': 20}, {'name': 'Mike', 'age': 10}]# 使用dumps(),将字典 ...
Python模块和包
模块定义:Python 模块(Module),是一个 Python 文件,以 .py 结尾. 模块能定义函数,类和变量,模块里也能包含可执行的代码。
模块的导入方式语法:[from 模块名] import [模块|类|变量|函数|*] [as 别名]
常用组合:
import 模块名
from 模块名 import 类、变量、方法等
from 模块名 import *
import 模块名 as 别名
from 模块名 import 功能名 as 别名
import 模块名基本语法:
import 模块名import 模块名1,模块名2模块名.功能名()
案例:导入time模块
# 导入时间模块import timeprint("开始")# 让程序睡眠1秒(阻塞)time.sleep(1)print("结束")
from 模块名 import 功能名基本语法:
from 模块名 import 功能名功能名()
案例:导入time模块中的sleep方法
# 导入时间模块中的sleep方法from time import sleepp ...
Python异常
异常捕获捕获常规异常try: 可能发生错误的代码except: 如果出现异常执行的代码
捕获特定异常如果尝试执行的代码的异常类型和要捕获异常类型不一致,则无法捕获异常。
try: print(name)except NameError as e: print('name变量名称未定义错误')
捕获多个异常当捕获多个异常时,可以把要捕获的异常类型的名字,放到except 后,并使用元组的方式进行书写。
try: print(1/0)except (NameError, ZeroDivisionError): print('ZeroDivision错误...')
捕获异常并输出描述信息try: print(num)except (NameError, ZeroDivisionError) as e: print(e)
捕获所有异常try: print(name)except Exception as e: print(e)
异常elseelse表示的时如果没有异常要执行的代码。
try: ...
文件操作
打开文件open(name,mode,encoding)
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式):只读、写入、追加等。
encoding:编码格式(推荐使用UTF-8)
例子:f=open('python.txt','r',encoding='utf-8'),encoding的顺序不是第三位,所以不能使用位置参数,用关键字参数直接指定。
模式
描述
r
只读模式,文件指针在文件开头。这是默认模式。
w
从头开始编辑,原有内容会被删除。如果不存在,创建新文件
a
如果文件存在,新内容会被写入到已有内容之后。如果不存在,创建性文件。
读文件
read(num)方法:num表示要从文件中读取的数据的长度,如果没有传入num,那么就表示读取文件中所有的数据。如果文件是以文本模式(非二进制模式)打开的,则read()函数会逐个字符进行读取;反之,如果文件以二进制模式打开,则read()函数会逐个字节进行读取。
readlines() ...
Python数据容器
列表空列表定义变量名称 = []变量名称 = list()
反向索引name_list = ["Tom", "Lily", "Rose"]print(name_list[-1]) # Roseprint(name_list[-2]) # Lilyprint(name_list[-3]) # Tom
查询下标name_list = ["Tom", "Lily", "Rose"]name_list.index("t")
查找指定元素在列表的下标,如果找不到,报错ValueError。
插入元素name_list = ["Tom", "Lily", "Rose"]name_list.insert(1,"Jack")print(name_list)
追加元素1将指定元素,追加列表的尾部
name_list = ["Tom", "Lily&qu ...
Python函数
函数的定义def 函数名(传入参数): 函数体 return 返回值
函数的说明文档def add(x, y): """ 两数相加 :param x: 相加的数字1 :param y: 相加的数字2 :return: 返回相加的结果 """ return x + y
在Python编写代码,可以通过鼠标悬停,查看调用函数的说明文档。
多个返回值def test_return(): return 1, 2x, y = test_return()print(x)print(y)
函数多种传参方式位置参数调用函数时根据函数定义的参数位置来传递参数,传递的参数和定义的参数的顺序及个数必须一致。
def user_info(name, age, gender): print(f"您的名字是{name},年龄是{age},性别是{gender}")user_info('Tom ...
Python小知识点
input()获取的数据类型永远是字符串类型。
基本数据类型
整数(int):表示整数值,例如:1、10、-5等。
浮点数(float):表示带有小数部分的数值,例如:3.14、2.0、-0.5等。
布尔值(bool):表示真(True)或假(False)的值。
字符串(str):表示一串字符,用引号(单引号或双引号)括起来,例如:”Hello”、’World’等。
列表(list):表示一组有序的元素,用方括号括起来并用逗号分隔,例如:[1, 2, 3]、[‘a’, ‘b’, ‘c’]等。
元组(tuple):表示一组有序的元素,用圆括号括起来并用逗号分隔,例如:(1, 2, 3)、(‘a’, ‘b’, ‘c’)等,不可变。
集合(set):表示一组无序的唯一元素,用花括号括起来并用逗号分隔,例如:{1, 2, 3}、{‘a’, ‘b’, ‘c’}等。
字典(dict):表示一组键值对,用花括号括起来,键值对之间用冒号分隔,例如:{‘name’: ‘John’, ‘age’: 25}等。
print(“Hello”, end=’’),可以输出不换行
w ...
Python-运算符
算术运算符/: 除法,用于将一个值除以另一个值,结果为浮点数。
//: 整除,用于将一个值除以另一个值,结果为整数(向下取整)。
**: 幂运算,用于将一个值的指数幂。2**3表示2的3次方
成员运算符in:如果指定的值在序列中存在,则返回 True。
not in:如果指定的值在序列中不存在,则返回 True。
身份运算符is:如果两个变量引用同一个对象,则返回 True。
is not:如果两个变量引用的不是同一个对象,则返回 True。
x = [1, 2, 3]y = [1, 2, 3]print(x == y) # True,x 和 y 的值相等print(x is y) # False,x 和 y 引用不同的对象
即使两个对象的值相等,但它们可能是不同的对象。在Python中,对象的身份是由对象在内存中的地址表示的,而对象的值是对象所包含的数据。当我们使用 is 运算符时,它比较的是对象的身份,而不仅仅是对象的值。
位运算符<<:左移,将一个数的二进制表示向左移动指定的位数。
>>:右移,将一个数的二进制表示向右移动指定的位数。
Python 格式化输出
基本用法name = "Alice"age = 25print("My name is {} and I'm {} years old.".format(name, age))
在这个例子中,大括号 {} 作为占位符,format() 方法中的参数按照顺序填充到占位符的位置。
指定参数顺序name = "Alice"age = 25print("My name is {1} and I'm {0} years old.".format(age, name))
通过在占位符中使用索引号,可以指定参数的顺序。在这个例子中,{1} 表示第二个参数 name,{0} 表示第一个参数 age。
指定参数名name = "Alice"age = 25print("My name is {n} and I' ...
字符串消消乐
消除相邻重复元素
#include <iostream>#include <vector>using namespace std;vector<int> removeConsecutiveDuplicates(const vector<int>& arr) { vector<int> result; //如果原数组当前元素左右两个元素不同,将当前元素加入result for (int i = 0; i < arr.size(); i++) { if (i == 0 || arr[i] != arr[i-1]) { if (i == arr.size()-1 || arr[i] != arr[i+1]) { result.push_back(arr[i]); } } } return result;}int ...