Python-排序__Python

來源:互聯網
上載者:User
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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.