Google Python Class --- Sorting

clipboard.png

剛纔看到一位朋友談到如何寫出高逼格的文章,想了想確實有道理。因此特地弄一張高清的圖片加上高逼格的文字。segmentfault

堅持是一種品格

學習Python和個人工做關係並不大,但這不重要,由於喜歡因此堅持。
打籃球他們由於不想和我一夥而爭論,徹底不顧個人感覺,但這不重要,由於喜歡因此堅持。
寫博客很費時間,有時候想寫又沒什麼可寫很痛苦,但這不重要,由於喜歡因此堅持。
寫博客排版很費時,終於碰到segmentfault,又產生了寫寫寫的慾望。【順便贊一下】數組

Google Python Class --- Sorting

繼續前面兩篇,我我的以爲這篇是乾貨最多的,至少我從中學到了很多東西。廢話少說,開始吧!app

  • 對一個列表排序最簡單的方法就是使用sorted(list)函數。
    前面咱們說過list.sort(),這是列表的一個方法。它直接做用於列表,而且沒有返回值。有時候咱們不想改變列表自己,只是但願返回一個新的列表,那麼就須要用到sorted(list)函數。函數

    a = [5, 1, 4, 3]
    print sorted(a)  ## [1, 3, 4, 5]
    print a  ## [5, 1, 4, 3]
  • google 課程中強烈推薦使用函數sorted(list),而不是list的方法list.sort().
    sorted(list)可使用參數,好比reverse=Ture/false,默認false[升序排列]學習

    strs = ['aa', 'BB', 'zz', 'CC']
    print sorted(strs)  ## ['BB', 'CC', 'aa', 'zz'] (case sensitive)
    print sorted(strs, reverse=True)   ## =True,改成降序排列
  • sorted(list)可使用可選的key參數指定一個函數.該函數會以每一個元素爲參數。
    排序時,列表中的元素會經過函數進行處理,並按照返回值進行排序。ui

    strs = ['ccc', 'aaaa', 'd', 'bb']
    #會按照元素的長度進行升序排列
    print sorted(strs, key=len)  ## ['d', 'bb', 'ccc', 'aaaa']
    
    #按照元素的小寫進行排序
    strs = ['BB','aa','CC','zz']
    print sorted(strs, key=str.lower)  ## ['aa', 'BB', 'CC', 'zz']
    
    #key後面能夠是自定義函數
    def MyFn(s):
    return s[-1]
    
    ## Now pass key=MyFn to sorted() to sort by the last letter:
    print sorted(strs, key=MyFn)  ## ['wa', 'zb', 'xc', 'yd']
    
    ## lambda 表達式
    strs = [1,2,-5,-435]
    #按照返回值排序
    print sorted(strs,key=lambda str:str*(-1)) #[2, 1, -5, -435]

clipboard.png

元組【Tuples】google

  • 元組是固定尺寸的元素的集合。在Python扮演一種"結構體"的角色spa

  • 元組與列表相似,可使用len()返回長度,使用[]訪問元素,使用for,in等等。code

    tuple = (1, 2, 'hi')
    print len(tuple)  ## 能夠返回長度
    print tuple[2]    ## 經過[]訪問元素
    tuple[2] = 'bye'  ## 元組一旦建立,不可以對元素進行修改
    tuple = (1, 2, 'bye')  ## 能夠從新建立

列表推導式【List Comprehensions】排序

  • 列表推導式是一種簡潔的方式,能夠將表達式擴展到整個列表。
    語法: [ expr for var in list ]

    nums = [1, 2, 3, 4]
      squares = [ n * n for n in nums ]   ## [1, 4, 9, 16]
      
      #建立一個所有都爲0的二維數組
      matrix = [[0 for col in range(ncols)] for row in range(nrows)]
  • 能夠在[ expr for va in list ]的右邊增長if條件進行過濾

    nums = [2,8,1,6]
    small = [n for n in nums if n <= 2 ] ## [2,1]
    
    ## Select fruits containing 'a', change to upper case
    fruits = ['apple', 'cherry', 'bannana', 'lemon']
    afruits = [ s.upper() for s in fruits if 'a' in s ]
相關文章
相關標籤/搜索