python 三行代码实现快速排序

最近在看 python cookbook , 里面的例子很精彩,这里就帮过来,做个备忘录

主要利用了行数的递归调用和Python的切片特性,解释一下每行代码的含义:

  • 第1行: #coding:utf-8 指定utf-8 编码
  • 第2行:定义函数名和参数
  • 第3行: 判断列表长度是否小于等于1, 如果小于等于1,直接返回列表
  • 第4行:返回递归函数拼接的列表,[lt for lt in L[1:] if lt <= L[0]] 列表推导表达式,返回一个比 L[0] 小的列表,[ge for ge in L[1:] if ge >= L[0]], 返回一个比L[0] 大的列表, 再加上L[0] 就构成完整的列表

第四行是最关键的,返回三个部分:

  1. 比列表第一个元素小的所有元素列表递归调用
  2. 第一个元素
  3. 比列表第一个元素大的所有元素列表递归调用

递归调用部分,处理过程都是一样的,用列表第一个参数作为中间值,把列表分为两部分

最后两行是测试代码,生成一个无序列表,打印排序结果。

#coding:utf-8
def qsort(L):
if len(L) <= 1: return L
return qsort([lt for lt in L[1:] if lt < L[0]]) + L[0:1]+ \
qsort([ge for ge in L[1:] if ge >= L[0]]) iList = [3,14,2,12,9,33,99,35] print qsort(iList)

python 三行代码实现快速排序的更多相关文章

  1. python三行代码实现快速排序

    def quick_sort(array): if len(array) < 2: return array return quick_sort([lt for lt in array[1:] ...

  2. Python一行代码实现快速排序

    上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡.选择.插入.希尔.归并),因为快速排序的重要性,所以今天将单独为大家介绍一下快速排序! 一.算法介 ...

  3. python numpy 三行代码打乱训练数据

    今天发现一个用 numpy 随机化数组的技巧. 需求 我有两个数组( ndarray ):train_datasets 和 train_labels.其中,train_datasets 的每一行和 t ...

  4. python 实现冒泡排序与快速排序 遇到的错误与问题

    今天看了兄弟连php里面的冒泡排序与快速排序,想了下应该可以用python实现. 冒泡排序函数: def mysort(x): len1 = len(x) for i in range(len1-1, ...

  5. 三行代码辨别PS

    三行代码辨别PS 博主的好友动态和朋友圈经常出现各种图片,博主很想知道这些图片有没有经过PS,于是选择了技术流-- 代码 先放代码为敬,返回结果为TRUE表示进行过PS. isPS.py #!/usr ...

  6. flask跨域请求三行代码搞定

    flask跨域请求三行代码就可以搞定.但是请注意几点: 第一:只能返回json格式数据,比如list.ndarray等都不可以 第二:返回的对象必须是是字符串.元组.响应实例或WSGI可调用. pyt ...

  7. 30个物联网传感器小实验:三行代码点亮LED灯

    30个物联网传感器小实验:三行代码点亮LED灯 三行代码点亮LED灯 LED灯闪烁 LED灯调亮度 LED淡入淡出 不写一行代码点亮LED灯 全彩RGB灯 面包板 30个物联网传感器小实验:三行代码点 ...

  8. 三行代码接入,社交软件打字时底下弹出的表情布局,自定义ViewPager+页面点标+各种功能的android小框架。

    (转载请声明出处:http://www.cnblogs.com/linguanh/) 前言: 接上次分享的 ListView 动态加载类,入口:http://www.cnblogs.com/lingu ...

  9. Java三行代码搞定MD5加密,测试5c短信网关的demo

    看到之前项目中,关于MD5加密的足足写了一个辅助类. 其实在Java中大部分都帮你实现好了,完成MD5加密,主要就三行代码: /** * 对字符串md5加密 * * @param str * @ret ...

随机推荐

  1. 理解、学习与使用Java中的Optional

    从Java8 引入的一个很有趣的特性是Optional类.Optional类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异 ...

  2. Vue 混合

    混合(mixins)是一种分发vue组件中可复用功能的非常灵活的方式.混合对象可以可以包含任意组件选项.以组件使用混合对象时,所有混合对象的选项将被混合到该组件本身的选项. //定义一个混合对象 va ...

  3. hdu6070 Dirt Ratio 二分+线段树

    /** 题目:hdu6070 Dirt Ratio 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6070 题意:给定n个数,求1.0*x/y最小是多少.x ...

  4. easyui换主题,并记录在cookie

    首先将easyui的样式文件加入一个ID,这里命名为easyuiTheme,然后在样式文件下面加入一个JS文件 <script type="text/javascript" ...

  5. php 相同的产品 一个背景色

    Array ( [0] => 12 [1] => 17 [2] => 17 [3] => 17 [4] => 17 [5] => 3 [6] => 3 [7] ...

  6. 运行jsp需要安装_______Web服务器。

    运行jsp需要安装_______Web服务器. A.Apache B.tomcat C.WebLogic D.IIS 解答:BC Apache是PHP程序运行的服务器,IIS是.net程序运行的服务器 ...

  7. 【vijos】1629 八(容斥原理+dfs)

    https://vijos.org/p/1629 本来是想出来了的,,,,但是有个地方写挫了一直没发现,sad 就是dfs的时候我传的pos传错了QAQ 这题用容斥很好想 首先在区间[l, r]能被a ...

  8. [ppurl]从”皮皮书屋”下载电子书的姿势

    (欢迎转载,转载请注明出处:http://blog.csdn.net/hcbbt/article/details/42072545) 写在前面的扯皮 为什么标题的"皮皮书屋"加上了 ...

  9. [转]NBehave行为驱动测试关于story和scenarios

    原文: Behavior-Driven Development with NBehave 这里模拟了一个"银行账户"的类 一个余额属性,一个存款方法,一个撤销账户的方法,一个转账的 ...

  10. 2014年辛星解读css第一节

    CSS是Cascading Style Sheets的缩写.即层叠样式表,它用于表现HTML的样式,即HTML仅仅是去写该网页有哪些内容,至于怎样去表现它们,由CSS去定制. ************ ...