1.Python初始化指定长度的数组
1.1初始化一维数组
方法1:
# 0为数组内初始数据,10位数据长度
list = [0]*10
# 结果:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
方法2:
list2 = [0 for i in range(10)]
# 结果:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
1.2初始化二维数组
区别:
二维情形就不同,因为初始化指定长度的二维list时,我们需要把空序列list()复制n次。如果采用方式一,则对list进行浅拷贝,每一个list调用append等方法时,所有list都会同步调用;而方式二这种python风格的数组comprehension表达式方式,则生成了n个相互独立的list对象,此时每行的list之间互不影响。显然,我们应该使用方式二来进行二维list的指定行数的初始化。
方法1:
a = [list()] * 5
a[0].append(1)
# 结果:[[1], [1], [1], [1], [1]]
方法2:
a = [list() for i in range(5)]
a[0].append(1)
# 结果:[[1], [], [], [], []]
2.sum()函数
2.1 一维数组
数组求和时,可使用numpy的sum()函数,但需要注意的是:
- 普通数组无法直接使用,即
list.sum()
会出错; - 将数组转化为np数组,即
nplist.sum()
可以 - 或使用
np.sum(list)
求和,适用于不想将数组改为np数组的情况。
2.3 二维数组
-
np.sum(list)
将数组中所有元素求和并返回单个数值; -
nplist.sum(axis=0)
对数组的每列求和,返回一个一维数组; -
nplist.sum(axis=1)
对每行求和,返回一个一维数组,如果需要保留格式,使用nplist = np.mat(nplist)
即可使用上述的axis=0/1返回二维数组。
注意: 文中的nplist指的是np数组
3.文本处理小结
3.1 打开文本文件并使之成为Python对象:
file = open(filepath,...) # 还有些其他参数
其中读取文件的方式有三种,分别是read()、readline()、readlines()三种,其特性如下:
- read() :读取整个文件,把整个文件的内容赋值给一个字符串。
- readline() :每次读取一行,把这一行赋值给一个字符串,返回。
- readlines() :把文件都放到内存中(如果文件比内存大,则用不了;速率很高);之后把整个文件作为一个list返回。
replace()
3.2 replace()
str.replace(old, new[, max])
参数含义
- old :将被替换的子字符串;
- new :新字符串,用于替换old子字符串;
- max :可选字符串, 替换不超过max次。
注意:
用replace()的时,因为readlines返回是列表的形式,但replace()的参数只能是字符串的形式,所以需要用str进行转换,否则将替换失败。
3.3 正则表达式匹配
pattern= re.compile(r'&,X,H,TD_Z')
match= re.match(pattern, str, flags=0)
re匹配字符串的方法有四种,分别是match
、search
、findall
、finditer
。其特性如下:
- match() :匹配
string
开头,成功返回Match object
, 失败返回None
,只匹配一个。 - search() :在
string
中进行搜索,成功返回Match object
, 失败返回None, 只匹配一个。 - findall() :在
string
中查找所有匹配成功的组, 即用括号括起来的部分。返回list
对象,每个list item
是由每个匹配的所有组组成的list
。 - finditer() :在
string
中查找所有匹配成功的字符串, 返回iterator
,每个item
是一个Match object
。
4.判断否包含在list中
在python中可以通过in和not in关键字来判读一个list中是否包含一个元素
theList = ['a', 'b', 'c']
if 'a' in theList:
print 'a in the list'
if 'd' not in theList:
print 'd is not in the lis'’
5.如何将科学计数法的数转化为指定位数的小数
y='{:.5f}'.format(x) # 5f表示保留5位小数点的float型