一.对列表进行排序
我们最长使用的是list.sort()对列表中的所有元素进行排序,但是对于一个字符串,我们要根据字符串中的某个元素进行排序,这要需要使用sort中的参数进行排序,
例如:
cnt.sort(key = lambda x:cmd(x), reverse=True)
这里x可以定义一个函数,去实现你要排序的内容,例如:
line_one:117.0022,39.7972,line_tow:117.0053,39.7973,diff:9.14 中对diff之后的字符串进行排序,实现方式如下:
import re #获取列表中某个固定元素 def cmd(x): x = x.split(":")[3] return abs(float(x)) def file_angle(): fp_sigma = open("E:\\file_02.txt", "r") fp_sort = open("E:\\file_02_sigma.txt", "w+") line = fp_sigma.readline() row = [] while line: line = fp_sigma.readline() if len(line) > 50: #将所有值写入到列表中 row.append(line) fp_sigma.close() fp_sort.close() #求角度的差值 cnt = [] max_agle = 0 for i in range(0, len(row) - 1): diff = float(row[i].split(',')[7]) - float(row[i+1].split(',')[7]) string = "line_one:" + row[i].split(',')[1] + ',' + row[i].split(',')[2] + ',line_tow:' + row[i+1].split(',')[1] + ',' + row[i+1].split(',')[2] + ',diff:' + str(round(diff, 5)) cnt.append(string) if abs(diff) > abs(max_agle): max_agle = diff i += 1 #对列表进行排序 cnt.sort(key = lambda x:cmd(x), reverse=True) #将列表中的数据写入文件 for j in range(0, len(cnt)): fp_sort.write(cnt[j]) fp_sort.close() # Press the green button in the gutter to run the script. if __name__ == '__main__': file_angle()