Python数组初始化固定长度、求和、简单⽂本处理
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()函数,但需要注意的是:
1. 普通数组⽆法直接使⽤,即list.sum()会出错;
2. 将数组转化为np数组,即nplist.sum()可以
3. 或使⽤np.sum(list)求和,适⽤于不想将数组改为np数组的情况。
2.3 ⼆维数组
1. np.sum(list)将数组中所有元素求和并返回单个数值;
2. nplist.sum(axis=0)对数组的每列求和,返回⼀个⼀维数组;
3. nplist.sum(axis=1)对每⾏求和,返回⼀个⼀维数组,如果需要保留格式,使⽤nplist = np.mat(nplist)即可使⽤上述的axis=0/1返回⼆维
数组。
注意: ⽂中的nplist指的是np数组
3.⽂本处理⼩结
3.1 打开⽂本⽂件并使之成为Python对象:
file = open(filepath,...)  # 还有些其他参数
其中读取⽂件的⽅式有三种,分别是read()、readline()、readlines()三种,其特性如下:
1. read() :读取整个⽂件,把整个⽂件的内容赋值给⼀个字符串。
2. readline() :每次读取⼀⾏,把这⼀⾏赋值给⼀个字符串,返回。
3. readlines() :把⽂件都放到内存中(如果⽂件⽐内存⼤,则⽤不了;速率很⾼);之后把整个⽂件作为⼀个list返回。
replace()
3.2 replace()
参数含义
1. old :将被替换的⼦字符串;
2. new :新字符串,⽤于替换old⼦字符串;
3. max :可选字符串, 替换不超过max次。
注意:
⽤replace()的时,因为readlines返回是列表的形式,但replace()的参数只能是字符串的形式,所以需要⽤str进⾏转换,否则将替换失败。
3.3 正则表达式匹配
pattern= repile(r'&,X,H,TD_Z')
match= re.match(pattern, str, flags=0)
re匹配字符串的⽅法有四种,分别是match、search、findall、finditer。其特性如下:
1. match() :匹配string开头,成功返回Match object, 失败返回None,只匹配⼀个。
2. search() :在string中进⾏搜索,成功返回Match object, 失败返回None, 只匹配⼀个。
3. findall() :在string中查所有匹配成功的组, 即⽤括号括起来的部分。返回list对象,每个list item是由每个匹配的所有组组成
的list。
4. 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型

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。