python-gzip库压缩和解压方法
Guderian出品
使用gzip压缩文件
先用
open()
打开待压缩文件,再用gzip.opnen()
打开压缩文件,最后读入待压缩文件内容并写入压文件中。
方法一
1 | import gzip |
方法二
如果你不喜欢用with
语句,还可以这么写(记得close()
就行了):
1 | import gzip |
---A Cyber Driver---
Guderian出品
先用
open()
打开待压缩文件,再用gzip.opnen()
打开压缩文件,最后读入待压缩文件内容并写入压文件中。
1 | import gzip |
如果你不喜欢用with
语句,还可以这么写(记得close()
就行了):
1 | import gzip |
图:芝加哥(Chicago)
Guderian出品
random.rand()
的作用是产生一个随机数列表,其包含的所有数字的取值范围为[0, 1)
且满足随机分布。其参数是用逗号,
分隔的若干正整数,正整数的个数为产生列表的维度,每个正整数的大小为该维度列表的大小。不写参数即返回一个随机数。如:
1 | from numpy import random as rd |
以上代码输出结果为:
1 | 0.25236670150458973 |
random.randn()
的作用是产生一个随机数列表,其包含的所有数字满足标准正态分布(高斯分布)。其参数是用逗号,
分隔的若干正整数,正整数的个数为产生列表的维度,每个正整数的大小为该维度列表的大小。不写参数即返回一个随机数。如:
1 | from numpy import random as rd |
以上代码输出结果为:
1 | 0.5488828975747972 |
图:北极狐(Artic Fox)
Guderian出品
C
语言的“短路”特性:若表达式的值可由先计算的左操作数的值单独推导出来,那么将不再计算右操作数的值。“短路”特性有时很有用,如(i != 0) && (j / i > 0)
使得不会发生除0
的情况。
C
条件表达式:表达式1 ? 表达式2 : 表达式3
:如果表达式1
为真,则返回表达式2
;否则表达式3
。
整数的数值溢出——上溢出:|一个数值运算结果| > |类型能表示的最大数|
。进位超过最高位而发生进位丢失或进位达到最高位而改变符号位。
对于无符号数,不能随意用a - b < 0
取代a < b
,因为前者可能发生数值溢出,导致判断结果发生错误。
浮点数的数值溢出,不仅有上溢出还有下溢出:
上溢出:|数值运算结果| > |类型能表示的最大数|
下溢出:|数值运算结果| < |类型能表示的最小数|
,此时系统把该结果处理成机器0
把float
赋值给int
会丢失小数(不经四舍五入)。
<stdlib.h>
中的exit(0)
终止整个程序的执行强制返回操作系统。当其参数为0
时表示正常退出,非0
表示程序出错。本文遵守
cc0
协议😎(图片和代码也是)
Guderian出品
<stdlib.h>
int rand(void)
生成一个随机数,其大小介于0
和RAND_MAX
之间。其中RAND_MAX
在头文件<stdlib.h
和<cstdlib>
中宏定义为#define RAND_MAX 0X7fff
,十进制形式为32767
即(1 << 15) - 1
。
调用rand()
函数应该通过srand(unsigned int)
设置随机数种子,一旦设置随机数种子,那么接下来程序将遵循同一个规则产生随机数。如果你没有设置随机数种子,那么程序将自动把随机数种子设置为1
。
如果设置随机数种子为常数(如1
),那么不管在什么时间、什么环境下运行程序都将得到相同的随机数。使用方法如下:
1 | //cc0 |
如果想要得到不同的随机数,一种常用的方法是设置随机数种子为系统时间戳time(NULL)
(先包含<time.h>
头文件),即从1970年1月1日0时到当前时刻所经过的秒数。使用方法如下:
1 | //cc0 |
图:乞力马扎罗山(Kilimanjaro)
Guderian出品
C
语言格式化屏幕输出:printf(格式控制字符串, 输出值参数表);
C
语言格式化屏幕输入:scanf(格式控制字符串, 输入地址表);
问题:printf()
用%
作为格式字符的标识,那么如何输出%
呢?C
规定,连续两个百分号出现在格式控制字符串中就表示要输出一个百分号
如何分隔多个输入数据?
1)空格、Tab
或回车
2)达到输入位宽
3)遇到非法字符
如何判断scanf()
函数读入了正确的数据项数呢?
事实上,scanf()
是有返回值的,它的返回值就是正确读入的数据项数。现在明白while(scanf(...))
为什么正确了吧?
scanf()
格式控制字符串中的普通字符原样输入。注意格式字符为%f, %e
为输入float
型且不能指定精度,格式字符为%c
为一个字符包括空白字符(如空格和制表符)。
scanf()
格式修饰符
字符型常量:所有的ASCII
码都可以通过转义方式表示,其中\ddd
为1
到3
位八进制ASCII
码值所代表的字符,\xhh
为1
到2
为十六进制ASCII
码值所代表的字符。如:'B'
等价于'\102'
等价于'\x42'
。
大小写英文字母的ASCII
值相差32
,即大写字母+32=小写字母
。
单个字符的输入输出:
putchar(ch)
:向屏幕输出一个字符,字符型变量ch
的值
ch = getchar()
:从键盘接受的字符作为getchar()
的函数值,无参数
用getchar()
输入时应注意的问题:getchar()
函数并不是直接读取用户输入的字符,而是将输入字符先放在输入缓冲队列中,再从缓冲队列读取字符,直到输入回车符或文件结束符EOF
时,程序才认为输入结束;一行输入结束,getchar()
才开始从输入缓冲队列读取字符,前面函数没读取的数据仍在缓冲队列中,将被下一个getchar()
函数读取。
在Linux/Unix
下键入Ctrl + D
或在Windows
下键入Ctrl + Z
,getchar()
函数的确是会返回-1
即EOF
(End Of File
)的,严格意义上应该用int
类型来接收getchar()
的返回值。
注意用%c
格式读入字符时,空格和回车等空白字符都会被当做有效字符读入,在%c
前加一个空格可以忽略缓冲区中的空白字符。