精华内容
下载资源
问答
  • 这三个排序方法应对日常工作基本够用 先说一下三者的区别 sort, sorted 是用在 list 数据类型中的排序方法 argsort 是用在 numpy 数据类型中的排序方法( numpy 里也有一个 sort 方法,下面会讲) sort 和 sorted ...

    这三个排序方法应对日常工作基本够用

    先说一下三者的区别
    sort, sorted 是用在 list 数据类型中的排序方法
    argsort 是用在 numpy 数据类型中的排序方法( numpy 里也有一个 sort 方法,下面会讲)

    sort 和 sorted 的区别如下👇
    先看两个简单的升序排序,分别使用 sorted 和 sort 方法

    # sorted 
    num_list = [1, 8, 2, 3, 10, 4, 5]
    ordered_list = sorted(num_list)
    print(ordered_list)    # [1, 2, 3, 4, 5, 8, 10]
    
    # sort
    num_list = [1, 8, 2, 3, 10, 4, 5]
    num_list.sort()
    print(num_list)    # [1, 2, 3, 4, 5, 8, 10]
    

    可以看出 sorted 并没有修改原来的数组,而是将排序的结果作为参数传递给一个新的数组,而 sort 则在原数组上直接进行了排序
    区别就是 sorted 需要一个变量接收排序结果,sort不用
    建议使用 sorted,因为 sort 虽然代码更简洁,但是会修改原数组,这样不灵活,如果你有多个地方同时使用了这个数组,那么经过 sort 操作之后的数组就已经不是原来那个数组了,debug的时候很麻烦


    说完了区别,来具体讲讲使用方法

    1.升序排序

    # sorted 升序排序
    num_list = [1, 8, 2, 3, 10, 4, 5]
    ordered_list = sorted(num_list)
    print(ordered_list)    # [1, 2, 3, 4, 5, 8, 10]
    
    # sort 升序排序
    num_list = [1, 8, 2, 3, 10, 4, 5]
    num_list.sort()
    print(num_list)    # [1, 2, 3, 4, 5, 8, 10]
    

    2.降序排序

    # sorted 降序排序
    num_list = [1, 8, 2, 3, 10, 4, 5]
    ordered_list = sorted(num_list, reverse=True)
    print(ordered_list)    # [1, 2, 3, 4, 5, 8, 10]
    
    # sort 降序排序
    num_list = [1, 8, 2, 3, 10, 4, 5]
    num_list.sort(reverse=True)
    print(num_list)    # [1, 2, 3, 4, 5, 8, 10]
    

    3.如果不想要排序后的值,想要排序后的索引,可以这样做

    num_list = [1, 8, 2, 3, 10, 4, 5]
    ordered_list = sorted(range(len(num_list)), key=lambda k: num_list[k])
    print(ordered_list)    # [0, 2, 3, 5, 6, 1, 4]
    

    4.字符串类型排序

    # 字符串类型排序
    str_list = ['1', '8', '2', '3', '10', '4', '5']
    ordered_list = sorted(str_list)
    print(ordered_list)  # ['1', '10', '2', '3', '4', '5', '8']
    
    str_list = ['A', 'D', 'B', 'N', 'C', 'R', 'V']
    ordered_list = sorted(str_list)
    print(ordered_list)  # ['A', 'B', 'C', 'D', 'N', 'R', 'V']
    

    5.二维数组排序

    book_list = [
        ['北大马克思主义研究', '9787509728529', 2011],
        ['人的解放', '9787215064003', 2014],
        ['西方经典悦读 资本论', '9787200092882', 2012],
        ['列宁的一生', '9787501319343', 2013],
    ]
    
    # sorted 按出版年升序排序
    ordered_list = sorted(book_list, key=lambda book: book[2])
    print(ordered_list)    # [['北大马克思主义研究', '9787509728529', 2011], ['西方经典悦读 资本论', '9787200092882', 2012], ['列宁的一生', '9787501319343', 2013], ['人的解放', '9787215064003', 2014]]
    
    # sort 按出版年降序排序
    book_list.sort(key=lambda book: book[2], reverse=True)
    print(book_list)    # [['人的解放', '9787215064003', 2014], ['列宁的一生', '9787501319343', 2013], ['西方经典悦读 资本论', '9787200092882', 2012], ['北大马克思主义研究', '9787509728529', 2011]]
    

    6.二维数组获取排序后的索引

    # sorted 获取排序后的索引
    book_list = [
        ['北大马克思主义研究', '9787509728529', 2011],
        ['人的解放', '9787215064003', 2014],
        ['西方经典悦读 资本论', '9787200092882', 2012],
        ['列宁的一生', '9787501319343', 2013],
    ]
    ordered_list = sorted(range(len(book_list)), key=lambda k: book_list[k][2])
    print(ordered_list)  # [0, 2, 3, 1]
    

    7.字典数组排序

    book_list = [
        {'name': '北大马克思主义研究', 'isbn': '9787509728529', 'publish_year': 2011},
        {'name': '人的解放', 'isbn': '9787215064003', 'publish_year': 2014},
        {'name': '西方经典悦读 资本论', 'isbn': '9787200092882', 'publish_year': 2012},
        {'name': '列宁的一生', 'isbn': '9787501319343', 'publish_year': 2013},
    ]
    # sorted 按出版年降序排序
    ordered_list = sorted(book_list, key=lambda book: book['publish_year'], reverse=True)
    print(ordered_list)    # [{'name': '人的解放', 'isbn': '9787215064003', 'publish_year': 2014}, {'name': '列宁的一生', 'isbn': '9787501319343', 'publish_year': 2013}, {'name': '西方经典悦读 资本论', 'isbn': '9787200092882', 'publish_year': 2012}, {'name': '北大马克思主义研究', 'isbn': '9787509728529', 'publish_year': 2011}]
    # sort 按出版年升序排序
    book_list.sort(key=lambda book: book['publish_year'])
    print(book_list)    # [{'name': '北大马克思主义研究', 'isbn': '9787509728529', 'publish_year': 2011}, {'name': '西方经典悦读 资本论', 'isbn': '9787200092882', 'publish_year': 2012}, {'name': '列宁的一生', 'isbn': '9787501319343', 'publish_year': 2013}, {'name': '人的解放', 'isbn': '9787215064003', 'publish_year': 2014}]
    

    8.字典数组获取排序后的索引

    book_list = [
        {'name': '北大马克思主义研究', 'isbn': '9787509728529', 'publish_year': 2011},
        {'name': '人的解放', 'isbn': '9787215064003', 'publish_year': 2014},
        {'name': '西方经典悦读 资本论', 'isbn': '9787200092882', 'publish_year': 2012},
        {'name': '列宁的一生', 'isbn': '9787501319343', 'publish_year': 2013},
    ]
    ordered_list = sorted(range(len(book_list)), key=lambda k: book_list[k]['publish_year'])
    print(ordered_list)  # [0, 2, 3, 1]
    

    9.对象排序

    class Book(object):
        def __init__(self, name, isbn, publish_year):
            self.name = name
            self.isbn = isbn
            self.publish_year = publish_year
        def __repr__(self):
            return repr((self.name, self.isbn, self.publish_year))
    book_list = [
        Book('北大马克思主义研究', '9787509728529', 2011),
        Book('人的解放', '9787215064003', 2014),
        Book('西方经典悦读 资本论', '9787200092882', 2012),
        Book('列宁的一生', '9787501319343', 2013),
    ]
    # sorted 按出版年降序排序
    ordered_list = sorted(book_list, key=lambda book: book.publish_year, reverse=True)
    print(ordered_list)  # [('人的解放', '9787215064003', 2014), ('列宁的一生', '9787501319343', 2013), ('西方经典悦读 资本论', '9787200092882', 2012), ('北大马克思主义研究', '9787509728529', 2011)]
    # sort 按出版年升序排序
    book_list.sort(key=lambda book: book.publish_year)
    print(book_list)  # [('北大马克思主义研究', '9787509728529', 2011), ('西方经典悦读 资本论', '9787200092882', 2012), ('列宁的一生', '9787501319343', 2013), ('人的解放', '9787215064003', 2014)]
    

    10.对象排序获取排序后的索引

    book_list = [
        Book('北大马克思主义研究', '9787509728529', 2011),
        Book('人的解放', '9787215064003', 2014),
        Book('西方经典悦读 资本论', '9787200092882', 2012),
        Book('列宁的一生', '9787501319343', 2013),
    ]
    ordered_list = sorted(range(len(book_list)), key=lambda k: book_list[k].publish_year)
    print(ordered_list)  # [0, 2, 3, 1]
    

    11.一维数组排序【numpy】

    numpy 只有 sort 没有 sorted,且 numpy 的 sort 方法 和 list 的 sorted 方法使用起来类似

    import numpy as np
    
    # 一维数组
    num_list = np.array([1, 8, 2, 3, 10, 4, 5])
    index_list = np.sort(num_list)
    print(index_list)    # [ 1  2  3  4  5  8 10]
    

    12.一维数组获取排序后的索引【numpy】

    num_list = np.array([1, 8, 2, 3, 10, 4, 5])
    index_list = np.argsort(num_list)
    print(index_list)    # [0 2 3 5 6 1 4]
    

    13.一维数组降序排序【numpy】

    # # 降序排序
    num_list = np.array([1, 8, 2, 3, 10, 4, 5])
    index_list = np.argsort(-num_list)    # 加负号按降序排序
    print(index_list)  # [4 1 6 5 3 2 0]
    

    14.二维数组排序【numpy】

    num_list = np.array([
        [1, 8, 2, 9],
        [8, 2, 4, 5],
        [2, 3, 7, 4],
        [1, 2, 3, 5]
    ])
    ordered_list = np.sort(num_list, axis=0)    # axis=0 是按列排序
    print(ordered_list)
    # [[1 2 2 4]
    #  [1 2 3 5]
    #  [2 3 4 5]
    #  [8 8 7 9]]
    
    ordered_list = np.sort(num_list, axis=1)     # axis=1 是按行排序
    print(ordered_list)
    # [[1 2 8 9]
    #  [2 4 5 8]
    #  [2 3 4 7]
    #  [1 2 3 5]]
    

    15.二维数组获取排序后的索引【numpy】

    num_list = np.array([
        [1, 8, 2, 9],
        [8, 2, 4, 5],
        [2, 3, 7, 4],
        [1, 2, 3, 5]
    ])
    ordered_list = np.argsort(num_list, axis=0)   # axis=0 是按列排序
    print(ordered_list)
    # [[0 1 0 2]
    #  [3 3 3 1]
    #  [2 2 1 3]
    #  [1 0 2 0]]
    ordered_list = np.argsort(num_list, axis=1)  # axis=1 是按行排序
    print(ordered_list)
    # [[0 2 1 3]
    #  [1 2 3 0]
    #  [0 1 3 2]
    #  [0 1 2 3]]
    
    展开全文
  • 您需要对值进行排序,然后在第一个索引上(对于从零开始的索引,0)并告诉{}颠倒顺序:import operatorsorted(myDict.values(), key=operator.itemgetter(0), reverse=True)如果没有dict.values()调用,您将尝试对键...

    您需要对值进行排序,然后在第一个索引上(对于从零开始的索引,0)并告诉{}颠倒顺序:import operator

    sorted(myDict.values(), key=operator.itemgetter(0), reverse=True)

    如果没有dict.values()调用,您将尝试对键进行排序。在

    演示:

    ^{pr2}$

    如果要输出键值对,则使用dict.items()并使用lambda访问值上的第一个索引:sorted(myDict.items(), key=lambda i: i[1][0], reverse=True)

    演示:>>> sorted(myDict.items(), key=lambda i: i[1][0], reverse=True)

    [('b', [7, 2, 4, 1]), ('a', [5, 2, 1, 2]), ('c', [2, 0, 1, 1])]

    在这两种情况下,按第一个元素排序实际上没有多大意义;您可以让列表自然排序:sorted(myDict.values(), reverse=True) # sort just the values

    sorted(myDict.items(), key=operator.itemgetter(1), reverse=True) # sort items

    因为列表列表是按字典顺序排序的;如果第一个元素相等,则两个列表将基于第二个元素排序,依此类推

    要将其写入制表符分隔的文件,请使用csv模块;它将负责将值转换为字符串、编写制表符分隔符并处理换行符:import csv

    with open('../masterListShort.tsv', 'wb') as outfh:

    writer = csv.writer(outfh, delimiter='\t')

    for key, values in sorted(myDict.items(), key=operator.itemgetter(1), reverse=True):

    writer.writerow([key] + values)

    展开全文
  • 首先把实现方法写出来,其实很简单,只需要一句代码即可:复制代码代码如下:productlist.sort(lambda p1, p2:cmp(p1.getPrice(), p2.getPrice()))数组productlist中存储的是自定义类Product,Product有一个方法是...

    首先把实现方法写出来,其实很简单,只需要一句代码即可:

    复制代码

    代码如下:

    productlist.sort(lambda p1, p2:cmp(p1.getPrice(), p2.getPrice()))

    数组productlist中存储的是自定义类Product,Product有一个方法是返回商品的价格,于是对productlist按照Product的价格从低到高进行排序,仅需要如此简单的一行代码即可实现。

    Python真的是一门简洁而强大的语言,实际上,我也是从写出一行代码之后,才真正感受到这门语言的魅力。

    写到这里,顺便介绍一下lambda表达式的相关知识,现在很多语言都支持lambda表达式,甚至包括.Net。

    lambda函数一般也被叫做匿名函数,先来看一个最简单例子:

    def test(x):

    return x**2

    print test(4)

    如果使用lambda,则语法如下:

    test = lambda x : x**2

    print test(4)

    从上面的例子可以看出,lambda语句构建的其实是一个函数对象,lambda最大的特点就是,可以省去定义函数的过程,让代码更加精简。

    关于lambda的语法

    lambda语句中,冒号前是参数,可以有多个,用逗号隔开;冒号右边是返回值。

    展开全文
  • arr = [{"time": "2018-07-17 08:57:43"}, {"time": "2018-07-17 08:57:41"}, {"time": "2018-07-17 08:57:44"}] arr.sort(key = lambda x:x["time"]) print("arr.sort = ", arr)
    arr = [{"time": "2018-07-17 08:57:43"}, {"time": "2018-07-17 08:57:41"}, {"time": "2018-07-17 08:57:44"}]
    arr.sort(key = lambda x:x["time"])
    print("arr.sort = ", arr)
    
    展开全文
  • 1. 删除排序数组中的重复项 给你一个有序数组 nums,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间...
  • 我也不知道怎么解释。。。cmp是提供了比较的规则,s通过调用cmp指定的函数来比较两个成员这是sort函数在帮助文档,你看看吧s.sort([cmp[, key[, reverse]]])The sort() method takes optional arguments for ...
  • python学习笔记:二维数组排序问题

    千次阅读 2021-02-03 23:30:22
    有一个文件,文件目录及名称:d:\\test1.txt文件内容:0001 Jone 1000.000002 Stone 30000.000008 Smith 50000.000005 Super 60000.000010 Abust 10000.00现在需要完成的功能是:输入1:进行工号排序,输入2:进行...
  • 以下是一些解决方案:>无论如何,使用np.argsort,毕竟它是...缺点:目前,没有稳定的算法可用,因此我们必须对每个bin进行排序.>使用scipy.ndimage.measurements.labeled_comprehension.这大致是需要的,但不知...
  • Python对Json数组对象排序

    千次阅读 2021-01-13 15:11:06
    排序前 {'code': 'X001', 'shptype': '航空运输', 'quantity': 4, 'pkgcode': epcm.package(1,), 'avastart': datetime.date(2020, 12, 27), 'avaend': datetime.date(2021, 6, 1)} {'code': 'X002', 'shptype': '...
  • I have an array and it has 4 elements and every element has 3 subelements;myList = [['26.03.2019', 'Michelle', '8'], ['03.04.2019', 'Jack', '2'], ['01.04.2019', 'George', '2'], ['02.04.2019', 'Micheal...
  • I have 2d array, dimension 3x10, and I want to sort by values in 2nd row, from lowest to highest...解决方案Python, per se, has no "2d array" -- it has (1d) lists as built-ins, and (1d) arrays in stand...
  • , [0.77922301, 0.09916946, 0.76566095], [0.47272886, 0.34700999, 0.21310556], [0.66733795, 0.89457897, 0.95406421]] 基本思路是先将两个二维数组拼接成一个三维数组,然后按照score对数组进行排序,...
  • ", "plant": "水果-苹果" }, { "unix_time": 1472061092, "type": "record", "content": "abcdefeglagagagagii", "plant": "水果-苹果" } ] 按时间戳(unix_time)从大到小顺序把数组里对象进行从新排序 对象是从大...
  • sorted函数sorted(iterable,key,reverse)iterable 待排序的可迭代对象key 对应的是个函数, 该函数用来决定选取用哪些值来进行排序reverse 反转排序对key排序d: dict = {"p": 59, "o": 9, "s": 5, "a": 20, "z": 18}...
  • 换言之,numpy不关心在拉取值时,您是否尝试用shape (2,3,4)数组来索引数组,只是它会反馈给您一个shape (2,3,4)数组。例如:>>> a[[[0,0],[0,0]],[[0,0],[0,0]],[[0,0],[0,0]]] array([[0, 0], [0, 0]]) 在本例中,...
  • python多个条件排序

    2021-02-10 16:05:48
    解答:事实上Python的sort方法就是这么写的,所以直接sort即可,若是第一个升序,第二个降序,a.sort(key=lambda x: (x[0], -x[1]))即可(相当于构造了一个新的数组数组) 注意:如果使用的是sorted(a,key=lambda x:...
  • 返回一个数组,内容是在将源输入数组变为有序(升序)数组的过程中需要进行交换操作的最小的数组。 样例输入: [1, 2, 4, 7, 10, 11, 7, 12, 6, 7, 16, 18, 19] 样例输出: [3,9] 假设有一个数是无序的,那么至少有...
  • 排序用的sorted函数,去重自己实现的,当然去重也可以用set import sys num = int(sys.stdin.readline().strip("\n")) list1=[] for i in range(num): m=int(sys.stdin.readline().strip("\n")) list1.append(m) ...
  • 1、数组倒序:原始元素的倒序排列(1)切片>>>arr=[1,2,3,4,3,4]>>>print(arr[::-1])[4,3,4,3,2,1](2)reverse()>>>arr=[1,2,3,4,3,4]>>>arr.reverse()>>>print(arr)[4,3...
  • tldr:NumPy在对数值数组进行数值计算时会发光.虽然有可能(见下文)NumPy不适合这个.你可能最好使用Pandas.问题的原因:值正在按字符串排序.您需要将它们排序为整数.In [7]: sorted(['15', '8'])Out[7]: ['15', '8']...
  • 已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。 输入 第一行,原始数列。 第二行,需要插入的数字。 输出 排序后的数列 arr=list(map(int,input().split())) b=int(input()...
  • 我有一个带形状的麻木数组(n,9)。例如:[[1579.0, 483.0, 1949.0, 407.0, 1959.0, 454.0, 1589.0, 531.0, 0.33],[1613.0, 1115.0, 1995.0, 1093.0, 1998.0, 1137.0, 1616.0, 1159.0, 0.16],[904.0, 1417.0, 1068.0, ...
  • 数组排序

    2020-12-18 07:43:09
    我们来看一下如何使用冒泡排序算法对一个整型数组从小到大进行排序:// 冒泡排序----import java.util.Arrays;public class Main {public static void main(String[] args) {int[] ns = { 28, 12, 89, 73, 65...
  • 假设我们有两个排序数组A和B。我们必须将它们合并并仅形成一个排序数组C。列表的大小可能不同。例如,假设A = [1,2,4,7]和B = [1,3,4,5,6,8],则合并列表C将为[1,1,2,3,4, 4,5,6,7,8]为了解决这个问题,请遵循以下...
  • List1、一维数组2、二维数组无论是一维数组还是二维数组都能通过 list 自带的 sort() 函数进行更新,或者直接调用sorted()方法即可。import numpy as npa = [3,4,5,1,2,3]b = [[3,4,5],[2,3,4]]c = [[3,4,5],[3,3,4]...
  • for index, val in enumerate(s): d[val].append(index) >>> {'000000': [0, 1, 2], '000001': [3, 5], '000002': [4, 8], '000003': [6, 7]}) 有一个List,排序后返回相应index import numpy as np l = [1,4,5,2,3]...
  • e、增加元素:一维arr.append('aaa')二维arr[0].append('aaa')如果要在任意位置插入用 arr.insert(n, 值)此外还有一种特殊的用法是:arr += [数组元素]在不指定下标的情况下,是允许用 += 增加数组元素的。...
  • 针对数组中数字,如果想要获得前N小/大数字的索引 可进行如下操作 import numpy as np a = np.array([1,4,3,5,2]) b = np.argsort(a) print(b) 输出的结果是[0 4 2 1 3]从小到大排序 由此可以看出数组a中大小排布的...
  • 题目如下: 题目 比较简单...[leetcode题目答案讲解汇总(Python版 持续更新)] (https://www.jianshu.com/p/60b5241ca28e) ps:如果您有好的建议,欢迎交流 :-D, 也欢迎访问我的个人博客 苔原带 (www.tundrazone.com)
  • 在 编辑:如果输出列表顺序无关紧要,有一个很好的快速解决方案(O(log(N)*N)):首先对输入列表进行排序 然后使用bisect生成切片子列表,它返回所提供数字的插入位置(左&右) 像这样:import bisect source = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,876
精华内容 43,150
关键字:

python数组排序

python 订阅