[关闭]
@Bruce1Tone 2021-05-02T08:35:09.000000Z 字数 5394 阅读 457

菜鸡的Python学习笔记

计算机
唐智崴 Python


杂七杂八不知道放哪的用法

指令 作用
ord(a) 把字符串转换成ASCII码值
pinrt(x, end = " ") 不换行,以空格分隔输出
sys.stdout.write() 无空格输出,但是要import sys
global x 在函数内部定义全局变量x,然后就可以修改函数外部的变量x值了
x.encoding='gbk' 显示编码错误的时候可以尝试添加这个
print(round(n,2)) 把n保留2位小数输出
打包exe .py文件打包成.exe文件的方法
math.ceil(x) x向上取整,需要import math
math.floor(x) x向下取整,需要import math

生成不重复的随机数

  1. import random
  2. #A为最小数,B为最大数
  3. resultlist = random.sample(range(A,B+1),count)
  4. #sample(x,y)表示从列表x中,选择y个不重复的元素

Python 数据类型

列表List

list类型用中括号表示,其中的元素可以修改

list相关操作:

指令 作用
len(list) 返回列表长度
list.count(x) 返回x在list中出现的次数
list.append(x) 将x添加在list的末尾
list.insert(a,x) 将x插入到第a个元素之后
list.index(x) 返回x在list中的索引,如果不存在则返回错误
list.reverse() 将list倒序排列
list.sort() 将list排序
list.pop() 弹出list的末尾(栈顶)元素
list.popleft() 弹出最左边的元素
del list[a] 删除索引为a的元素
del list[a:b] 删除索引为a到b-1的元素

注意:

  1. from collections import deque
  2. list = deque([x,x,x,x,...])
  3. list.popleft()

列表推导式:

  1. list = [1,2,3]
  2. list = [3*x for x in list]
  3. print(list)

输出结果是[3,6,9]

  1. list = [[x,x+2] for x in list]

输出结果[[1,3] , [2,4] , [3,5]]

  1. list = [3*x for x in list if x<=2]

输出结果是[3,6]

  1. vex1 = [1,2]
  2. vec2 = [3,4]
  3. vec = [x*y for x in vec1 for y in vec2]

输出结果是[3,4,6,8]

  1. ori = [
  2. [1,2,3],
  3. [4,5,6],
  4. [7,8,9],
  5. ]
  6. new = [[row[i] for row in ori] for i in range(3)]
  7. print(new)

输出结果为[[1,4,7],[2,5,8],[3,6,9]]

  1. for i,v in enumerate(list):
  2. print i,v

输出为 0 xxx, 1 xxx,...

  1. a = ['x','y','z']
  2. b = ['p','q','r']
  3. for m,m in zip(a,b):
  4. print('{0}{1}'.format(a,b))

输出 xp,yq,zr

列表list与元组tuple的区别

集合set

集合由不同的元素构成,相同元素会自动删除

  1. setname = {value1,value2...} #定义方法1
  2. set(value) #定义方法2
  3. #当定义空集合的时候,只能采用第二种方法

set相关操作:

指令 作用
s.add(x) 将元素x添加到集合s中
s.update(x) 将x添加到s,且x可以为list、tuple、dictionary(key)
s.remove(x) 将x从s中移除,若不存在则会发生错误
s.discard(x) 将x从s中移除,若不存在也不会发生错误
s.pop() 随机删除s一个元素
len(s) 计算集合s元素个数
s.clear 清空集合
  1. a = 'abcde'
  2. a = {x for x in a if x not in 'abcd'}
  3. print(a)

输出为 ['e']

字典Dictionary

无序存储,格式为大括号{}内的:{键key: 值value}

  1. dict = {} #建立空字典
  2. dict[key] = value #定义字典某键值内容
  3. dict = {key1:value1, key2:value2, ...} #定义字典多个键值内容
指令 作用
del dict[key] 删除键
del dict 删除字典
dict.clear() 清空字典
len(dict) 计算字典中键的总数
dict.update(dict2) 将dict2中的键值更新到dict中

- 字典的遍历:

  1. for x, y in dict.items():
  2. print x,y

运算符

指令 作用 备注
x**y 幂计算,即x^y
x//y x/y的结果向下取整
math.log(b,a) 计算 需要导入math库

简单语句

指令 作用
a,b = x,y 复合赋值,a=x, b=y
if-elif-elif-...-elif 类似于switch-case的分支结构
while-else 循环条件不满足时,执行else
  1. for i in range(0,10,3)
  2. print(i)

按增量为3输出0-9,即 0 3 6 9

文件操作

文件读写

  1. with open("test.txt","wt")as out_file:
  2. out_file.write("要写入的内容")
  1. with open("test.txt","rt")as in_file:
  2. text = in_file.read()
  3. #将test.txt文件的内容读取到text中
  1. import xlwt #需要用到xlwt表格写入库
  2. book = xlwt.Workbook() #创建一个新的excel
  3. sheet = book.add_sheet('case1_sheet') #添加一个名为case1_sheet的sheet页
  4. sheet.write(row,col,s) #在row行col列添加一个值为s的数据
  5. book.save('stu_1.xls') #保存在当前目录,文件名为stu_1.xls
  1. import xlrd
  2. book = xlrd.open_workbook('stu_1.xls')
  3. sheet = book.sheet_by_index(0) #按照索引打开sheet
  4. sheet2 = book.sheet_by_name('case1_sheet') #按照sheet的名字打开sheet
  5. print(sheet.cell(0,0).value) #打印单元格数值
  6. sheet.nrows #获取行数
  7. sheet.ncols #获取列数
  1. import xlrd
  2. import xlwt
  3. from xlutils import copy
  4. book = slrd.open_workbook('test.xlsx') #读入文件book
  5. sheet_rd = book.sheet_by_index(0) #读入book的sheet1
  6. book_wt = copy(book) #拷贝出临时的book_wt
  7. sheet_wt = book_wt.get_sheet(0) #获取写入用的sheet
  8. #所有写入的操作对sheet_wt进行
  9. book_wt.save(test.xlsx) #将book_wt覆盖原来的book保存

快速获取Excel数据

获取某列数据

  1. col_data = sheet.col_values(0)[0:10]
  2. print(col_data)

输出结果是:第1列第1~11行的数据

载入模块

在编写模块文件的时候,加入一句:

  1. if__name__=='__main__':

这一句后面的所有语块只会在该脚本单独运行时运行,而不会在被其他脚本载入的时候运行

异常处理

基本格式

  1. try:
  2. statement 1 #正常执行语句1
  3. except 错误类型:
  4. statement 2 #如果发生该类型错误,则执行语句2
  5. else:
  6. statement 3 #如果没有发生该错误,则执行语句3

实例
读取不定长度的excel表格

  1. row = 0
  2. col = 0
  3. while True:
  4. row += 1
  5. try:
  6. data.append(sheet.cell(row,col).value)
  7. except IndexError:
  8. break

Pygame库

指令 作用 备注
pygame.init() 初始化游戏
screen = pygame.display.set_mode((xxx,xxx)) 设置屏幕,大小为(xxx,xxx)
pygame.event.get() 获取鼠标、键盘等事件
sys.exit() 退出游戏
pygame.dispay.flip() 不断更新屏幕,显示新元素,隐藏旧元素
screen.fill(bg_color) 填充颜色 bg_color = (x,x,x)
指令 功能 参数
pygame.image.load('location') 加载图片 location = images/ship.bmp
xxx.image.get.rect() 获取xxx的外接矩形
rect.centerx 居中至x轴 center, centerx, centery
rect.bottom 与屏幕边缘对齐 top,bottom,left,right
rect.xxx 矩形的几个位置 left,right,top,bottom
pygame.transform.scale(image,scale) 转换图像尺寸 image = location, scale = (x,x)

Numpy学习

Ndarray数组

基本用法

  1. from numpy import np
  2. a = np.array([1,2,3]) #一维数组
  3. b = np.array([[1,2],[3,4]]) #二维数组

Pandas学习

DataFrame类型

数据类型

是一种表格型数据,可以根据字典来创建
例如:

  1. data = {
  2. 'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
  3. 'year':[2000,2001,2002,2001,2002],
  4. 'pop':[1.5,1.7,3.6,2.4,2.9]
  5. }
  6. frame = pd.DataFrame(data)
  7. frame

输出:

  1. pop state year
  2. 0 1.5 Ohio 2000
  3. 1 1.7 Ohio 2001
  4. 2 3.6 Ohio 2002
  5. 3 2.4 Nevada 2001
  6. 4 2.9 Nevada 2002

创建

创建DataFrame类型:

  1. a = [1,2,3]
  2. b = [4,5,6]
  3. df = np.DataFrame([a,b],columns = ['one','two','three'])

输出:

  1. one two three
  2. 0 1 2 3
  3. 1 4 5 6

索引

行索引是index,列索引是columns

读取excel

可以直接以DataFrame的文件类型读入excel文件:

  1. df = pd.read_excel("data.xlsx")
  2. df = pd.read_excel("data.xlsx",converters = {u'fund_code':str}) #强制转换为字符
  3. df = pd.read_excel("data.xls",header = None) #无表头

DataFrame输出excel

  1. df = np.DataFrame(list)
  2. df.to_excel('xxxx.xls')

Matplotlib绘图库学习

pyplot库

一般用:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. plt.show() #显示图像

基本绘制

线图和点图

plt.plot(x,y,type)函数
例如:

  1. plt.plot(array_1,array_2)
  2. plt.title('title',fontsize = 20) #按固定字体大小写标题
  3. plt.xlabel('xxx') #x轴的标签为xxx
  4. plt.ylabel('yyy') #y轴的标签为yyy
  5. plt.show()

其中,type的参数有:
类型

参数 类型 参数 类型
- 实线 -- 虚线
-. 点画线 : 点线
. , 像素点
o 圆点 s 正方点
^/> 三角形 * 星形点
2/4 奔驰三角形

颜色

参数 类型
b blue
g green
r red
c cyan青色
m magenta品红
y yellow
k black
w white

规定类型的绘制:

  1. plt.plot(array_1,array_2,'ro') #红色圆点
  2. plt.plot(array_1,array_2,'b--') #蓝色虚线

规定显示范围axis

用法如下

  1. plt.axis([xa,xb,ya,yb])
  2. #则显示x的(xa,xb)和y的(ya,yb)范围

绘制散点图scatter

基本函数是plt.scatter(x,y,c,marker)
其中c表示colormarker表示点的形状
实例:

  1. plt.scatter(x,y,c = 'b', marker = '.')

网页爬虫

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注