资讯专栏INFORMATION COLUMN

Google Python Class --- Sorting

madthumb / 587人阅读

摘要:它直接作用于列表,并且没有返回值。排序时,列表中的元素会通过函数进行处理,并按照返回值进行排序。会按照元素的长度进行升序排列按照元素的小写进行排序后面可以是自定义函数表达式按照返回值排序元组元组是固定尺寸的元素的集合。

刚才看到一位朋友谈到如何写出高逼格的文章,想了想确实有道理。所以特意弄一张高清的图片加上高逼格的文字。

坚持是一种品格

学习Python和我的工作关系并不大,但这不重要,因为喜欢所以坚持。
打篮球他们因为不想和我一伙而争论,完全不顾我的感受,但这不重要,因为喜欢所以坚持。
写博客很费时间,有时候想写又没什么可写很痛苦,但这不重要,因为喜欢所以坚持。
写博客排版很费时,终于碰到segmentfault,又产生了写写写的欲望。【顺便赞一下】

Google Python Class --- Sorting

继续前面两篇,我个人觉得这篇是干货最多的,至少我从中学到了不少东西。废话少说,开始吧!

对一个列表排序最简单的方法就是使用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参数指定一个函数.该函数会以每个元素为参数。
排序时,列表中的元素会通过函数进行处理,并按照返回值进行排序。

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]

元组【Tuples】

元组是固定尺寸的元素的集合。在Python扮演一种"结构体"的角色

元组与列表类似,可以使用len()返回长度,使用[]访问元素,使用for,in等等。

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 ]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45509.html

相关文章

  • 由 sort 中 key 的用法浅谈 python

    摘要:但是实际写程序中,我们经常会写出许多繁杂的丑陋的代码。特别推荐,许多代码让我获益匪浅,比如这里对的使用。用可以写出很简单直观的代码,如下当然,上面不考虑效率,这里有一个利用分治法思想的高效的方法。更多文章更多阅读中参数的用法高级编程技巧 用 Python 时间也算不短了,但总感觉自己在用写 C++ 代码的思维写 Python,没有真正用到其作为脚本语言的优势。之前刷 LeetCode ...

    keke 评论0 收藏0
  • 浅谈 python 中的 sorted()与sort()

    摘要:返回值是一个经过排序的可迭代类型,与一样。注一般来说,和可以使用表达式。与的不同在于,是在原位重新排列列表,而是产生一个新的列表。 我们需要对List进行排序,Python提供了两个方法 对给定的List L进行排序,方法1.用List的成员函数sort进行排序方法2.用built-in函数sorted进行排序(从2.4开始) ----------------------------...

    lansheng228 评论0 收藏0
  • 数据结构与算法(二):带你读懂冒泡排序(Bubble Sorting

    摘要:经过一次冒泡排序,最终在无序表中找到一个最大值,第一次冒泡结束。也是我们后面要说的冒泡排序的优化。冒泡排序只执行第一层循环,而不会执行第二层循环。因此冒泡排序的时间复杂度是。 showImg(https://user-gold-cdn.xitu.io/2019/6/19/16b6f986df6880f9?w=640&h=142&f=gif&s=17175);showImg(https:...

    chuyao 评论0 收藏0
  • Python基础练习100题 ( 1~ 10)

    摘要:一套全面的练习,大家智慧的结晶大家好,好久不见,我最近在上发现了一个好东西,是关于夯实基础的道题,原作者是在的时候创建的,闲来无事,非常适合像我一样的小白来练习对于每一道题,解法都不唯一,我在这里仅仅是抛砖引玉,希望可以集合大家的智慧,如果 一套全面的练习,大家智慧的结晶 大家好,好久不见,我最近在Github上发现了一个好东西,是关于夯实Python基础的100道题,原作者是在Pyt...

    Java3y 评论0 收藏0
  • Java - Sorting Algorithms

    Complexity Quicksort Mergesort Heapsort Time Complexity O(nlogn) O(nlogn) O(nlogn) Space Complexity O(1) O(n) Could be O(1) Quicksort Quicksort is s...

    陈江龙 评论0 收藏0

发表评论

0条评论

madthumb

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<