list排序

Django使用Case手动控制排序

被刻印的时光 ゝ 提交于 2019-11-29 04:46:26
手动控制排序使用 Django update方法,所有涉及的数据每一条都会执行一次SQL update语句,MySQL有case语句可将所有影响的数据进行一次性更改,查看Django文档支持case语句 https://docs.djangoproject.com/en/2.2/ref/models/conditional-expressions/ >>> a_month_ago = date.today() - timedelta(days=30) >>> a_year_ago = date.today() - timedelta(days=365) >>> # Update the account_type for each Client from the registration date >>> Client.objects.update( ... account_type=Case( ... When(registered_on__lte=a_year_ago, ... then=Value(Client.PLATINUM)), ... When(registered_on__lte=a_month_ago, ... then=Value(Client.GOLD)), ... default=Value(Client.REGULAR) ... ), ... ) >>>

Java集合中Collections工具类总结

此生再无相见时 提交于 2019-11-29 03:22:29
Collections工具类 Collections 是一个操作 Collection(Set、 List )和 Map 等集合的工具类 Collection和Collections的区别? Collection是用来存储单列数据的集合接口,常用子接口有List和Set Collections是操作Collection的工具类。 常用方法 排序操作: reverse(List): 反转 List 中元素的顺序 shuffle(List): 对 List 集合元素进行随机排序 sort(List): 根据元素的自然顺序对指定 List 集合元素按升序排序 sort(List, Comparator): 根据指定的 Comparator 产生的顺序对 List 集合元素进行排序 swap(List, int, int): 将指定 list 集合中的 i 处元素和 j 处元素进行交换 查找和替换: Object max(Collection): 根据元素的自然顺序,返回给定集合中的最大元素 Object max(Collection, Comparator): 根据 Comparator 指定的顺序,返回给定集合中的最大元素 Object min(Collection) Object min(Collection, Comparator) int frequency(Collection

Python 基础 2-3 列表的反转与排序

自古美人都是妖i 提交于 2019-11-29 02:17:09
引言 列表是按照特定格式排序而成的,有时候这种排序方式我们并不喜欢,我们希望它可以按照我们的方式来进行正序或者倒序排序,或其他的排序方式 反转与排序 比如说我这里有一组列表,里面存放的全部都是数值,但非常乱,要你将它按从小到大或从大到小排序 列表可以按正序排序,也可以按倒序排序,排序分永久性的和临时性的 列表反转 列表反转,使用 reverse() 方法将列表元素反过来排序 注意: 是将列表元素反过来排序,不是倒序排序 reverse() 方法对列表元素修改的排序永久性的,不过随时可以再调用 reverse() 来恢复原来的排序 num = [ 23 , 12 , 53 , 6 , 18 , 68 , 55 , 96] num.reverse() print(num) # 运行结果:[96, 55, 68, 18, 6, 53, 12, 23] 从以上示例中看到,使用 reverse() 方法进行反转排序仅仅是把列表元素头尾互换反转过来而已,并没有进行倒序排序 列表排序 列表可对数字、英文字母进行排序 1. 正序排序,使用 sort() 方法进行正序排序,永久性排序,排序后不可恢复原来的排序 cars = ['bmw', 'audi', 'toyota', 'subaru'] cars.sort() print(cars) # 运行结果:['audi', 'bmw',

十大经典排序算法

天大地大妈咪最大 提交于 2019-11-29 01:58:15
0.1 排序的定义 对一序列对象根据某个关键字进行排序。 0.2 术语说明 稳定: 如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定: 如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序: 所有排序操作都在内存中完成; 外排序: 由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行; 时间复杂度: 一个算法执行所耗费的时间。 空间复杂度: 运行完一个程序所需内存的大小。 0.3 算法总结 0.4 算法分类 1、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序介绍: 冒泡排序 1.1 算法描述 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3,直到排序完成。 代码实现 2、选择排序(Selection Sort) 2.1 算法描述 n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:

二次排序

半城伤御伤魂 提交于 2019-11-28 22:48:30
二次排序 1 原理 二次排序就是首先按照第一字段排序,然后再对第一字段相同的行按照第二字段排序,注意不能破坏第一次排序的结果。 这里主要讲如何使用一个Mapreduce就可以实现二次排序。Hadoop有自带的SecondarySort程序,但这个程序只能对整数进行排序,所以我们需要对其进行改进,使其可以对任意字符串进行排序。下面会分别列出这两个程序的详解。 Hadoop自带的例子中定义的map和reduce如下,关键是它对输入输出类型的定义:(java泛型编程) public static class Map extends Mapper<LongWritable, Text, IntPair, IntWritable> public static class Reduce extends Reducer<IntPair, NullWritable, IntWritable, IntWritable> 在 map阶段,使用job.setInputFormatClass定义的InputFormat将输入的数据集分割成小数据块splites,同时 InputFormat提供一个RecordReder的实现。本例子中使用的是TextInputFormat,他提供的RecordReder会将文 本的一行的行号作为key,这一行的文本作为value。这就是自定义Map的输入是

PHP对二维数组进行排序

柔情痞子 提交于 2019-11-28 22:21:38
/** * 获取最近的店铺 * @param $lng * @param $lat * @return array */ protected function getClosestShop($lng,$lat) { $shop = M('shop'); $shop_list = $shop->where(['status'=>1,'is_del'=>0])->select(); foreach ($shop_list as $k=>&$v) { $v['distance'] = Func::getDistance($lng,$lat,$v['longitude'],$v['latitude'],1,0); } $order_column = array_column($shop_list,'distance'); array_multisort($order_column,SORT_ASC,SORT_NUMERIC,$shop_list); return $shop_list; } 两个函数,array_column,array_multisort。 好好研究研究。 来源: https://www.cnblogs.com/jiqing9006/p/11430080.html

十大经典排序算法

无人久伴 提交于 2019-11-28 19:59:43
排序概念 对一序列对象根据某个关键字进行排序。 算法总结 名词解释: n: 数据规模 k: “桶”的个数 In-place: 占用常数内存,不占用额外内存 Out-place: 占用额外内存 专业术语: 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序:所有排序操作都在内存中完成; 外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行; 时间复杂度: 一个算法执行所耗费的时间。 空间复杂度:运行完一个程序所需内存的大小。 算法分类 比较和非比较的区别 常见的 快速排序、归并排序、堆排序、冒泡排序 等属于 比较排序 。 在排序的最终结果里,元素之间的次序依赖于它们之间的比较。每个数都必须和其他数进行比较,才能确定自己的位置。 在 冒泡排序 之类的排序中,问题规模为n,又因为需要比较n次,所以平均时间复杂度为O(n²)。在 归并排序、快速排序 之类的排序中,问题规模通过 分治法 消减为logN次,所以时间复杂度平均 O(nlogn) 。 比较排序的优势是,适用于各种规模的数据,也不在乎数据的分布,都能进行排序。可以说, 比较排序适用于一切需要排序的情况。 计数排序、基数排序、桶排序 则属于 非比较排序 。非比较排序是通过确定每个元素之前,应该有多少个元素来排序

集合(一)

微笑、不失礼 提交于 2019-11-28 18:58:45
备注:若有不正之处,请多谅解并欢迎批评指正。转载请标明链接: https://www.cnblogs.com/pmbb/p/11421506.html 1. 集合的概念和作用 集合类存放于java.util包中。 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。 集合类型主要有3种:set(集)、list(列表)和map(映射)。 集合接口分为:Collection和Map,list、set实现了Collection接口 集合和数组的区别 数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。如下: 1:数组能存放基本数据类型和对象,而集合类存放的都是对象的引用,而非对象本身! 2:数组容易固定无法动态改变,集合类容量动态改变。 3:数组无法判断其中实际存有多少元素,length只告诉了数组的容量,而集合的size()可以确切知道元素的个数 4:集合有多种实现方式和不同适用场合,不像数组仅采用顺序表方式 5:集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可实现各种复杂操作,大大提高了软件的开发效率 此图可用 Windows 系统自带画图工具查看比较清晰 Collection 和 Map ,是集合框架的根接口。

List集合的排序

拜拜、爱过 提交于 2019-11-28 18:06:31
最近在写需求时,将某张表中的短信信息拿出,sql写完后,取出来后的结构是List<Map>,在进行到某一步时需要将这个List<Map>进行逆序排序, 当时第一想法便是写一个for循环,然后得到想要的排序。事后,偶然间看到一个工具类Collections,其中有一个方法是reverse, 示例逆序代码如下,核心代码只要一句,非常简单: 以上是最简单的逆序,平时在写代码里往往会根据某一个条件或者字段等等进行排序。如果碰上这样的需求,一般会有两种方法: 第一种是list中的对象实现Comparable接口; 第二种方法是根据Collections.sort重载方法来实现。 此处,我就用第二种方法做一个示例 既然要根据某一条件进行排序,那么先做好前期准备,这里new了三个map,分别把一些数值put到map里,key为countNum,value为不同的值,如下: 接着定义要排序的字段(我这里用的是countNum),以及重载sort()方法,最后打印输出,如下: 其中new Comparator<Map>()的Map也可以是一个bean,return的写法也可以是io1 .compareTo(io2); 具体有什么不同,就由小伙伴自己尝试了,毕竟这个太简单了,就不说了。 这里再啰嗦一下说一下原理,为什么return的时候用了compareTo()方法就能排序好,理由如下:

2019.8.26课程设计报告

拟墨画扇 提交于 2019-11-28 16:08:01
一、当天完成的任务 划水的一天,POI获取数据完成了,但是没排序也没筛选,先放着后续优化的时候做吧。看了看SQLite,把导航栏第二页基本完成 贴个图: 二、第二天的计划 明天开始做导航了吧,争取周三完成。 三、每日小结 ①POI用List全部保存,但是没排序,之后优化的时候根据距离排个序吧 ②SQLite要root权限。。。。 ③今天开始Gitlab上传了,之前全都传github上了,而且Android Studio默认都是传github的,所以传gitlab还挺麻烦的, 来源: https://www.cnblogs.com/RecKono/p/11414599.html