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 ]
相关文章
相关标签/搜索