list排序

Python高级函数(三)

白昼怎懂夜的黑 提交于 2020-02-21 18:24:42
sorted()函数 排序算法在各种程序中都有广泛的应用,排序的核心就是按照某种规则比较所谓的“大小”,然后交换位置,如果是数字,我们可以直接比较,但如果是字符串或者两个字典呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。 Python的内置sorted函数就可以对list进行排序。 >> > sorted ( [ 36 , 5 , 15 , - 9 , 12 , 24 ] ) [ - 9 , 5 , 12 , 15 , 24 , 36 ] 此外,sorted()也是一个高阶函数,能够包含一个关键字key使待排序的list能按照key的有关规则进行排序,下面就是一个小例子。 >> > sorted ( [ 36 , - 5 , 4 , 25 , 12 , - 40 ] , key = abs ) [ 4 , - 5 , 12 , 25 , 36 , - 40 ] abs就是对list里的所有数字的绝对值进行排序。 然后就是利用sorted函数对子符串进行排序,默认情况下,对字符串排序,是按照ASCII的大小比较的,由于’Z’ < ‘a’,结果,大写字母Z会排在小写字母a的前面。 现在,我们提出排序应该忽略大小写,按照字母序排序。要实现这个算法,不必对现有代码大加改动,只要我们能用一个key函数把字符串映射为忽略大小写排序即可。忽略大小写来比较两个字符串

小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据

流过昼夜 提交于 2020-02-19 11:03:38
在家为国家做贡献太无聊,不如跟我一起学点 Python 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):Pandas (二)数据结构 Series 小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame 引言 最近这个系列有段时间没更新,理由也就不找了,总结就一点,懒!懒得学习! 我就是这么一个能勇于发现并且承认错误的人。 不过从这篇开始,我又恢复更新了,手动滑稽一下:) 接下来小编要分享一些 Pandas 的基础操作,可能会有些无聊,不过还是希望有兴趣的同学能对照着代码自己动手敲一下。 闲话不多聊,下面开始正题。 查看数据 前面的两篇内容中,我们介绍了 Pandas 的两种数据结构,本篇的内容将主要介绍一些有关于 DataFrame 的查找操作,毕竟 DataFrame 是一个二维类似于表一样的数据结构,我们平时会更多的使用 DataFrame 。 首先第一部还是导入 Pandas 与 NumPy ,并且要生成一个 DataFrame ,这里小编就简单的使用随机数的形式进行生成,代码如下: import numpy as np import pandas as pd dates = pd.date

python3 对list排序 sort

被刻印的时光 ゝ 提交于 2020-02-18 19:50:51
转载注明出处csdn bestsort 对字符按ASCII码从小到大排序: l = ['a','Z','w','C','Q','b','t'] l.sort() print(l) 从大到小: l = ['a','Z','w','C','A','b','t'] l.sort(reverse=True) print(l) 按字母顺序从小到大排序: l = ['a','Z','w','C','A','b','t'] l.sort(key=str.lower) print(l) 按字母顺序从大到小排序: l = ['a','Z','w','C','A','b','t'] l.sort(key=str.lower,reverse=True) print(l) 后文反序的同理在sort里面加上 reverse = True 就ok 对list中特殊的terple(dictionary)元素为排序: 按value排序 l = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] l.sort(key=lambda k:k[1]) print(l) 按照key排序 l = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] l.sort(key=lambda k:k[0])

STL笔记(3)- Effective STL

大兔子大兔子 提交于 2020-02-18 07:35:11
Effective STL 1: 慎重选择容器类型 2: 不要试图编写独立于容器类型的代码 3: 确保容器中的对象 copy 正确且搞笑 存在继承关系时的 copy 会导致分割 , 可以存储对象指针 . 4: 调用 empty 而不是检查 size() 是否为 0 empty 对所有标准容器是常数时间操作 . size() 返回容器元素个数 , 耗费线性时间. capacity() 返回能够存储的总数 , 对于 vector(type) c, capacity 为 0, 不能赋值 , 必须用 reserve 分配空间 . 5: 区间成员函数优先于与之对应的单元素成员函数 . 避免写显示循环 , 这样减少对象拷贝 , 减少代码 . 1 vector<int> v1, v2; 2 3 //... 4 5 v1.clear(); 6 7 for(vector<int>::const_iterator ci = v2.begin(); ci != v2.end(); ++ci) 8 9 {10 11 v1.push_back(*ci);12 13 }14 15 相当于16 17 v1.assign(v2.begin(), v2.end());18 19 而算法 copy(v2.begin(), v2.end(), back_inserter(v1)); 中尽管没有显示循环 , 但是

2020寒假作业(2/2)

房东的猫 提交于 2020-02-17 15:29:33
这个作业属于哪个课程 软件工程 这个作业要求在哪里 在这 这个作业的目标 学习github、制定代码规范、撰写程序读取日志,列出全国和各省在某日的感染情况,单元测试、自我评测、寻找五个仓库 作业正文 我的寒假作业 其他参考文献 无 一、前置要求 1. github初始用 我的github仓库地址: https://github.com/heng1999/InfectStatistic-main 2. PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 40 Estimate 估计这个任务需要多少时间 1440 1680 Development 开发 1090 1120 Analysis 需求分析 (包括学习新技术) 150 180 Design Spec 生成设计文档 60 40 Design Review 设计复审 30 10 Coding Standard 代码规范 (为目前的开发制定合适的规范) 60 40 Design 具体设计 60 60 Coding 具体编码 600 540 Code Review 代码复审 30 40 Test 测试(自我测试,修改代码,提交修改) 100 210 Reporting 报告 210 250 Test Repor 测试报告 60

常见算法

那年仲夏 提交于 2020-02-16 18:38:43
目录 1. 冒泡排序 2. 快速排序 3. 选择排序 4. 插入排序 5. 插入排序 【写在前面】 这个是在巩固常见算法学习过程做的一些笔记,因为是笔记,所以后续先更新自己 有道云 的 普通笔记 ,再是md笔记,最后才是同步到博客园(即此地址) 有道云普通链接 有道云md地址 1. 冒泡排序 思路:两两交换,较大的数值放后,第一次排序后最大已经在末尾 算法动图•ᴗ• 特点:需要n-1趟,比如10个数字,需要9次 代码实现要点: 两个for循环,外层控制排序趟数,内层控制比较次数,因为每趟排序完成都会把最大的推到后面,所以每次趟数过后比较数都要减1 优化:如果一次排序后没有交换位置那么该数组已经有序。 int[] list=new int[]{1,4,3,2,9,7,8}; //事先申明免得每次换的时候都要实例化新的对象占用内存,设置参省防止没有循环导致的错误 int tem; boolean isChange; for(int i=0;i<list.length;i++) { isChange=false; for(int j=0;j<list.length-1-i;j++) { if(list[j]>list[j+1]) { tem=list[j]; list[j]=list[j+1]; list[j+1]=tem; isChange=true; } } //如果一趟下来没有排序

Java 中的比较器 —— Comparator

流过昼夜 提交于 2020-02-15 12:26:27
一、Comparable 接口 学习 Comparator 之前,我们先来看看 Comparable 接口。 这里先不介绍 Comparable 接口的相关概念,我们先看看数组和集合列表的排序。我们应该都写过,比较简单,这里再回顾一下吧。 1、数组的排序 对数组排序,使用 Arrays.sort () : import java . util . Arrays ; public class Main { public static void main ( String [ ] args ) { String [ ] fruits = new String [ ] { "Pineapple" , "Apple" , "Orange" , "Banana" } ; Arrays . sort ( fruits ) ; for ( String fruit : fruits ) { System . out . println ( fruit ) ; } } } 输出结果为: Apple Banana Orange Pineapple 2、集合列表的排序 对于集合列表的排序,我们可以使用 Collections.sort() 方法: import java . util . ArrayList ; import java . util . Collections ; import

快速排序

大兔子大兔子 提交于 2020-02-15 08:43:45
快速排序是一种 交换排序 。 它的基本思想是:通过一趟排序将要排序的数据 分割 成独立的两部分: 分割点左边都是比它小的数,右边都是比它大的数 。 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 基本思想: 1)选择一个基准元素 , 通常选择第一个元素或者最后一个元素, 2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。 3)此时基准元素在其排好序后的正确位置 4)然后分别对这两部分记录 用同样的方法继续进行排序,直到整个序列有序。 快速排序的示例: (a)一趟排序的过程: (b)排序的全过程 核心代码 public int division( int[] list, int left, int right) { // 以最左边的数(left)为基准 int base = list[left]; while (left < right) { // 从序列右端开始,向左遍历,直到找到小于base的数 while (left < right && list[right] >= base) right--; // 找到了比base小的元素,将这个元素放到最左边的位置 list[left] = list[right]; // 从序列左端开始,向右遍历

Java Collections.sort() 排序

对着背影说爱祢 提交于 2020-02-13 21:41:58
Collections 中有一个方法叫做sort可以对集合中的内容进行排序,要使用这个sort方法进行排序的集合,里面的泛型必须实现Comparable接口,实现这个接口的对象才具备排序的功能,这种排序自然排序。 public class User implements Comparable<User> { private String name; private int age; private int id; public User(String name, int age, int id) { this.name = name; this.age = age; this.id = id; } public String getName() { return name; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + ", id=" + id + '}'; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }

Python list.sort()排序

江枫思渺然 提交于 2020-02-13 17:47:58
List中字典指定元素排序 array = [{"score": "98", "name": "lili", "age": 19}, {"score": "98", "name": "chenming", "age": 18}, {"score": "88", "name": "wangxin", "age": 17}] print("排序前:", array) # 排序前: [{'score': '98', 'name': 'lili', 'age': 19}, {'score': '98', 'name': 'chenming', 'age': 18}, {'score': '88', 'name': 'wangxin', 'age': 17}] array.sort(key=lambda x: x["score"]) print("指定单个元素排序:", array) # 指定单个元素排序: [{'score': '88', 'name': 'wangxin', 'age': 17}, {'score': '98', 'name': 'lili', 'age': 19}, {'score': '98', 'name': 'chenming', 'age': 18}] array.sort(key=lambda x: (x["score"], x["age"])) print(