python的常见排序
在python程序中,我们往往自始至终都在与序列(列表、字典、元组)打交道,而最常用的操作就是对序列排序了。在此简单总结一下python中的排序。
- 基本排序方法
在python中,list对象具有 sort( ) 方法,该方法对list中的元素重拍,修改list本身。同时,python中还有一个 sorted( ) 函数,可以对任意的Iterator(关于Iterator的介绍请看这里)排序,该函数构建一个新的list来返回排序结果,不修改Iterator本身。
最简单的,我们可以直接调用sorted函数,递增排序,注意,sorted( ) 函数返回一个新的list
>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]
对于list对象,可以直接调用它的 sort( ) 方法,该方法直接修改list本身(返回None)。
>>> a = [5, 2, 3, 1, 4]
>>> print a.sort()
None
>>> a
[1, 2, 3, 4, 5]
一般情况下,我们使用 sorted( ) 函数,因为它可以作用于任何Iterator,并且不修改Iterator本身。
>>> sorted({2: 'D', 1: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]
- Key 函数的使用 list.sort() 和 sorted() 都可以加入参数key 来指定一个函数作用于list中的每一个项用来做比较.
例如按照字母的大小顺序做比较:
>>> sorted("This is a test string from Andrew".split(), key=str.lower)
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
还有一种经常使用的方法是利用对象中的某个元素。
例如:
>>> student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
>>> sorted(student_tuples, key=lambda student: student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
- 升序和降序
list.sort( ) 和 sorted( ) 两个方法中都接受一个布尔参数reverse,来确定升序排序还是降序排序
>>> a=[3,4,1,5,2]
>>> sorted(a,reverse=True)
[5, 4, 3, 2, 1]
>>> sorted(a)
[1, 2, 3, 4, 5]
- 下面是C语言中常见的两种排序方法:
冒泡排序:
def ballpop(list):
i=0
j=0
mid =0
for i in range(len(list)-1,0,-1):
for j in range(0,i):
if list[j]>list[j+1]:
mid=list[j+1]
list[j+1]=list[j]
list[j]=mid
print list
list = [15,10,23,6,11,105,70,2,54,21,8]
ballpop(list)
用sort一句话,list.sort(),print list
插入排序:
def insert(x,n):
i=1
while i<n-1:
key=x[i]
j=i-1
while j>=0 and key<x[j]:
x[j+1]=x[j]
j-=1
x[j+1]=key
i+=1
return x
print select([1,10,2,5,41,25,3,48],8) #[1, 2, 3, 5, 10, 25, 41, 48]
python的常见排序的更多相关文章
- python 的常见排序算法实现
python 的常见排序算法实现 参考以下链接:https://www.cnblogs.com/shiluoliming/p/6740585.html 算法(Algorithm)是指解题方案的准确而完 ...
- 用Python实现常见排序算法
最简单的排序有三种:插入排序,选择排序和冒泡排序.这三种排序比较简单,它们的平均时间复杂度均为O(n^2),在这里对原理就不加赘述了.贴出来源代码. 插入排序: def insertion_sort( ...
- python实现常见排序算法
#coding=utf-8from collections import deque #冒泡排序def bubblesort(l):#复杂度平均O(n*2) 最优O(n) 最坏O(n*2) for i ...
- 常见排序算法-Python实现
常见排序算法-Python实现 python 排序 算法 1.二分法 python 32行 right = length- : ] ): test_list = [,,,,,, ...
- python常见排序算法解析
python——常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...
- python——常见排序算法解析
算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序, ...
- Python:常见错误集锦(持续更新ing)
初学Python,很容易与各种错误不断的遭遇.通过集锦,可以快速的找到错误的原因和解决方法. 1.IndentationError:expected an indented block 说明此处需要缩 ...
- python基础===Python 代码优化常见技巧
Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 8 ...
- Python之常见算法介绍
一.算法介绍 1. 算法是什么 算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输 ...
随机推荐
- Ajax 处理json的方法不同
json字符串从从后台传递到前台的方法有两种 1.使用context.Response(); 2.使用webmethod 方法调用静态函数 返回的字符串 前者返回的json是obj类型,而后者返回的是 ...
- xenserver 模板导出导入
由于业务需求,新增一台xenserver,需要将原先创建好的模板环境导入到新的母机上面,此处记录一下 1.导出模板 # 获取需要导出的模板uuid [root@localhost ~]# xe tem ...
- JavaWeb 三层框架
1. MVC 设计模式 Model: JavaBean; View: Jsp; Controller: Servlet; 2. JavaWeb 三层框架 所谓三层是表述层(WEB 层), 业务逻辑层( ...
- unity 人物描边锯齿
项目原来实现描边用了2个pass,一个pass cull back 渲染政策,一个cull front 渲染轮廓,但问题是锯齿特别明显 尝试了下边缘光实现描边,效果更不行,边线是断的
- Springboot整合thymeleaf模板
Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用. Thymeleaf的主要目标在于提供一种可被浏览器正确显示的.格式良好的模板创建方式,因此也可以用作静态建 ...
- 我的Android进阶之旅------>Android关于Activity管理的一个简单封装
用一个集合类对所有的Activity进行管理,实现随时控制Activity.用add(Activity activity)方法向List中添加Activity,用remove(Activity act ...
- postman 编码加密汇总
1.MD5加密 /*加密方式:将 请求头的user-agent内容+请求方式+当前时间+(Base64)请求body中的stacode参数 拼接后得到的字符串进行MD5加密*/ //1.获取reque ...
- Zookeeper配置说明
转载自:https://my.oschina.net/u/2338362/blog/399361 Zookeeper的安装和配置十分简单, 既可以配置成单机模式, 也可以配置成集群模式. 下面将分别进 ...
- F110操作手册-自动付款
SAP 系统 F110系统操作手册 目 录 1.自动付款... 3 1.自动付款 事务代号: F110 菜单路径: 会计 →财 ...
- jvm性能监控工具
jvm可能存在的问题: OutOfMemoryError:内存不足 内存泄露 线程死锁 锁竞争(Lock Contention) Java消耗过多的CPU 一.jps(j ...