1.sort方法
python内置了sort方法,可以很方便地对某个list进行排序
2.自定义排序(例如,按关键词的权重排序,按人的年龄排序,等等)
若list中每个元素都是2-tuple,tuple中第一个元素为string类型的keyword,第二个元素为该字符串对应的权重(int类型),希望权重排序(从高到低)
例如:l = [("a",4),("b",2),("c",8),("d",1)]
l.sort( key= lambda d:-d[-1])
#负号表示倒序,正号表示正序
print(l)
#打印:[("c",8),("a",4),("b",2),("d",1)]
3. dict排序
对字典的排序,因为每一个项包括一个键值对,所以要选择可比较多键或值进行排序
sort(iterable[,cmp[,key[,reverse]]])
例如:d = {"ok":1,"no":2}
# 对字典按键排序,用元组列表的形式返回
print(sorted(d. items(), key= lambda a:a[0]))
print( sorted(d))
# [("no",2),("ok",1)]
# [" no"," ok"]
注意:print(d)打印原字典,并未发生变化
对原字典若按照值排序,用元组列表形式返回,排序后再转成字典,则无法保证排序。
4.类排序
class test:
def __init__(self,a,b):
self.a = a
self.b =
test1 = test(5,25)
test2 = test(50,35)
test3 = test(10,15)
tests = [test1,test2,test3]
# 以key来排序
result = sorted(tests,key=lambda d:d.a)
for item in result:
print("a:%s" % item.a)
# 遍历原资料,顺序未有变化
for item in result:
print("a:%s" % item.a)
注:在python中对列表、元组、字典等内置的数据结构的处理事很方便的事情。python借鉴lisp中的很多函数式计算方式来处理列表,可以极大的简化我们的代码。
①set():将元组、列表转换成没有重复项的集合
②list():将集合、元组转换成列表
③tuple():将集合、列表转换成元组
④map(func,list):将list的每一个元素传递给func的函数,这个函数有一个参数,且返回一个值,map将每一次调用函数返回的值组成一个新的列表返回。
⑤filter(func,list):将list的每一个元素传递给func的函数,这个函数有一个参数,返回bool类型的值,filter将返回true的元素组成新的列表
⑥reduce(func,list):将list的元素,挨个取出和下一个元素通过func计算后将结果和再下一个元素继续计算。
网友评论