专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例
使用Python处理txt汉字文字、二维列表排序和获取list下标
一. list二维数组排序
它和字符串不同之处在于:字符串只能由字符组成而且不可变的(不能单独改变它的某个值),而列表是能保留任意数目的Python对象灵活容器。 总之,列表可以包含不同类型的对象(包括用户自定义的对象)作为元素,列表可以添加或删除元素,也可以合并或拆分列表,包括insert、update、remove、sprt、reverse等操作。
列表排序介绍
【1】常用列表排序方法包括使用List内建函数list.sort()或序列类型函数sorted(list)排序
两种方法的区别:
list.sort() 不会返回对象,改变原有的list。
sorted(list)没有改变原有的list。返回一个对象,可以用作表达式。原来的list不变,生成一个新的排好序的list对象。
举例:
1、正向:
list.sort()
print(list)
2、print sorted(list)
3、反向排序:L.sort(reverse=True)
二维列表排序,lambda匿名函数????
参考:http://blog.chinaunix.net/uid-20775448-id-4222915.html
【2】对第二个关键字进行排序。
list = [(‘Tom‘,4),(‘Jack‘,7),(‘Daly‘,9),(‘Mary‘,1),(‘God‘,5),(‘Yuri‘,3)]
方法1、list.sort(lambda x,y:cmp(x[1],y[1]))
方法2、list.sort(key=lambda x:x[1])
方法3、import operator
L.sort(key=operator.itemgetter(1))
总结:效率比较:
cmp < DSU < key
通过实验比较,方法1比方法2要慢,方法3和方法3基本相当
多关键字比较排序:
【3】多关键字比较排序:
想用第二个关键字排过序后再用第一个关键字进行排序呢?有两种方法
方法1、L.sort(key=lambda x:(x[1],x[0]))
方法2、L.sort(key=operator.itemgetter(1,0))
二. 处理txt文本
下面是通过txt文件按行读取,并获取面积进行排序。其中核心代码如下:
步骤:
读取文件&列表添加
列表排序
获取面积字符串
最后同时需要处理各种字符串情况,如‘或’、‘万’要乘10000、删除‘[1]’等。更简单的方法是通过正则表达式或获取第一个非数字字符。