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 locusfor i in range(0,len(locusList1)): print locusList1[i].timeStr
輸出結果:
23,20141015023244,1,116.4532242,39.9476242
23,20141015023257,1,116.4532242,39.9476242
23,20141015023258,1,116.4532242,39.9476242
20141015023244
20141015023257
20141015023258