list.sort()方法
此函数方法对列表内容进行正向排序,排序后的新列表会覆盖原列表,sort排序方法是直接修改原列表list
a = [5, 7, 6, 3, 4, 1, 2]
a.sort()
print a
a.reverse() # 倒序
print a
sorted()方法
即可以保留原列表,又能得到已经排序好的列表
a = [5, 7, 6, 3, 4, 1, 2]
b = sorted(a)
print b
c = sorted(a,reverse=1) #倒序
print c
两者区别
sort()是可变对象(字典、列表)的方法,无参数,无返回值,sort()会改变可变对象,因此无需返回值。
sort()方法是可变对象独有的方法或者属性,而作为不可变对象如元组、字符串是不具有这些方法的,如果调用将会返回一个异常。
sorted() 是python的内置函数,并不是可变对象(列表、字典)的特有方法,sorted()
函数需要一个参数(参数可以是列表、字典、元组、字符串),无论传递什么参数,都将返回一个以列表为容器的返回值,如果是字典将返回键的列表。
函数需要一个参数(参数可以是列表、字典、元组、字符串),无论传递什么参数,都将返回一个以列表为容器的返回值,如果是字典将返回键的列表。
lambda函数在元组,字典排序中的应用
a= [(‘b’,3),(‘a’,1),(‘c’,2)]
b = sorted(a,key = lambda a_tuple:a_tuple[0]) #按第一个元素排序
print b
c = sorted(a,key = lambda a_tuple:a_tuple[1]) #按第二个元素排序
print c
d = sorted(a,key=lambda a_tuple:a_tuple[0],reverse=1) #按第一个元素倒序
print d
对象属性排序
定义类:
class Locus:
#定义类属性,类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本。
#类似静态成员变量,对于公有的类属性,在类外可以通过类对象和实例对象访问。
version = 1.0 #公有的类属性
__x=0 #如果在属性名前面加了2个下划线'__',则表明该属性是私有属性,不能在类外通过类对象访问私有的类属性
#构造方法
def __init__(self,commaddr,timeStr,status,lon,lat):
self.commaddr = commaddr
self.timeStr = timeStr
self.status = status
self.lon = lon
self.lat = lat
#返回私有属性值
def getX(self):
return self.__x
#返回字符串,类似java中的toString()
def __str__(self):
return self.commaddr+","+self.timeStr+","+self.status+","+self.lon+","+self.lat
排序算法:
locusList = []
l1 = Locus("23","20141015023258", "1","116.4532242", "39.9476242")
l2 = Locus("23","20141015023244", "1","116.4532242", "39.9476242")
l3 = Locus("23","20141015023257", "1","116.4532242", "39.9476242")
locusList.append(l1)
locusList.append(l2)
locusList.append(l3)
locusList1 = sorted(locusList,key = lambda locus:locus.timeStr) #按timeStr排序
for locus in locusList1:
print locus
for i in range(0,len(locusList1)):
输出结果:
23,20141015023244,1,116.4532242,39.9476242
23,20141015023257,1,116.4532242,39.9476242
23,20141015023258,1,116.4532242,39.9476242
20141015023244
20141015023257
20141015023258