关于python的各种小补充
1. python2中文本的默认编码方式为ASCII,有中文字符的话开头必须指定编码方式:

否则会出现编码错误:

2. 一些特别的内置函数:
1 #执行python代码 2 exec("print('hello')") 3 4 #函数用于检查一个对象是否是可调用的。如果返回 True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。 5 callable(type) 6 7 #complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数 8 complex(1, 2) 9 10 #bytearray() 方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256 11 bytearray([1,2,3]) 12 13 #vars() 函数返回对象object的属性和属性值的字典对象 14 vars(type) 15 16 #zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表,且元素个数与最短的列表一致 17 a = [1,2,3] 18 b = [4,5,6] 19 zipped = zip(a,b) 20 print(*zipped)
3. 系统终端中运行代码的时候,注意换行符\n或者\r\n也占用一个字符位置
4. 模拟一个进度条
\r 代表回到行头
import time import sys a = range(20) for num, i in enumerate(a): time.sleep(0.2) sys.stdout.write('\r' + '[' + '■'*(num + 1) + ' '*(len(a) - num) + ']' ) sys.stdout.flush()
5. 改变字体和背景颜色
实现过程:
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。
转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。
书写格式:
开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m
开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m
注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个;另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别;但是,建议按照默认的格式规范书写。
对于结尾部分,其实也可以省略,但是为了书写规范,建议\033[***开头,\033[0m结尾。
数值表示的参数含义:
显示方式: 0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、 5(闪烁)、25(非闪烁)、7(反显)、27(非反显)
前景色: 30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋 红)、36(青色)、37(白色)
背景色: 40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋 红)、46(青色)、47(白色)
前景色: 30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋 红)、36(青色)、37(白色)
背景色: 40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋 红)、46(青色)、47(白色)
常见开头格式:
\033[0m 默认字体正常显示,不高亮
\033[32;0m 红色字体正常显示
\033[1;32;40m 显示方式: 高亮 字体前景色:绿色 背景色:黑色
\033[0;31;46m 显示方式: 正常 字体前景色:红色 背景色:青色
实例:
(1)print("\033[1;31;40m您输入的帐号或密码错误!\033[0m")
上方代码的输出格式为:字体高亮,红色前景,黄色背景 PS:前景色也就是字体的颜色
![]()

(2)print("\033[0;31m%s\033[0m" % "输出红色字符")
#上方代码的输出格式为:字体默认,红色前景

1 import time 2 import sys 3 a = range(30) 4 for num, i in enumerate(a): 5 time.sleep(1) 6 fill = '\033[33;m■\033[0m' 7 sys.stdout.write('\r' + '[' + fill*(num + 1) + ' '*(len(a) - num) + ']' ) 8 sys.stdout.flush()
#numpy 补充
#numpy.where
numpy.where() 有两种用法:
1. np.where(condition, x, y)
满足条件(condition),输出x,不满足输出y。
1 import numpy as np 2 3 a = np.array([[1,2,3,4],[3,4,5,6]]) 4 # 将 1 < a < 5 之外的元素设置为nan 5 c = np.where(a > 1, a, 0) 6 print(c) 7 d = np.where(c < 5 , c, 0) 8 print(d) 9 print(np.where(d == 0, np.nan, d)) 10 11 # 将 2 < a < 5之间的数设为nan 12 c = np.where(a < 2, a, 0) 13 print(c) 14 d = np.where(a > 5 , a, c) 15 print(d) 16 print(np.where(d == 0, np.nan, d))
2. np.where(condition)
只有条件 (condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。
#matplotlib补充
#path
将多个点创建成多边形,并可判断点是否在多边形内
from matplotlib import path #创建多边形 a = path.Path(np.array([[0,0],[2,0.5],[0,1],[1,0],[0.5,2],[2,2]])) #判断是否在其内 print(a.contains_point([1.9,0.5]))
#collections下的各种实用方法
#有序的字典OrderedDict()与Counter()
1 #利用有序的字典来完成计数并排序(计数相同的以第一次出现的顺序排列) 2 import collections 3 data = [2, 1, 1, 1, 4, 3, 5, 5, 6] 4 dic = collections.OrderedDict() 5 for i in data: 6 if dic.get(i): 7 dic[i] += 1 8 else: 9 dic[i] = 1 10 count = sorted(dic.keys(), key=lambda x: dic[x], reverse=True) 11 print(count) 12 13 #利用Counter可以更快的实现此功能 14 print(collections.Counter(data).most_common())
#位运算
https://blog.csdn.net/Caysen/article/details/78129113

浙公网安备 33010602011771号