首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在python中根据另一个数组对列表进行排序以生成新的数组

在Python中,你可以使用内置的sorted()函数或列表的sort()方法来根据另一个数组对列表进行排序。以下是两种方法的详细解释和示例代码。

方法一:使用sorted()函数

sorted()函数可以接受一个key参数,该参数允许你指定一个函数,该函数将在排序过程中应用于每个元素。你可以使用这个功能来根据另一个数组的值对列表进行排序。

示例代码:

代码语言:txt
复制
# 原始列表和排序依据数组
original_list = [5, 2, 9, 1, 5, 6]
sort_by_list = [3, 1, 2, 0, 3, 1]

# 使用sorted()函数和zip()函数进行排序
sorted_list = [x for _, x in sorted(zip(sort_by_list, original_list))]

print(sorted_list)  # 输出: [1, 2, 5, 5, 6, 9]

方法二:使用列表的sort()方法

列表的sort()方法也可以接受一个key参数,类似于sorted()函数。你可以使用这个方法来就地修改原始列表。

示例代码:

代码语言:txt
复制
# 原始列表和排序依据数组
original_list = [5, 2, 9, 1, 5, 6]
sort_by_list = [3, 1, 2, 0, 3, 1]

# 创建一个索引列表
indices = list(range(len(original_list)))

# 根据sort_by_list对索引进行排序
indices.sort(key=lambda i: sort_by_list[i])

# 根据排序后的索引重新排列original_list
sorted_list = [original_list[i] for i in indices]

print(sorted_list)  # 输出: [1, 2, 5, 5, 6, 9]

解释

  • 方法一:通过zip()函数将两个列表组合成一个元组列表,然后根据sort_by_list的值对这些元组进行排序。最后,通过列表推导式提取排序后的original_list元素。
  • 方法二:首先创建一个索引列表,然后根据sort_by_list的值对这些索引进行排序。最后,根据排序后的索引重新排列original_list

应用场景

这种方法在数据处理中非常有用,特别是在需要根据某个特定的顺序或标准对数据进行重新排列时。例如,在数据分析、机器学习模型的特征排序、或者任何需要根据外部条件对数据进行排序的场景中。

注意事项

  • 确保sort_by_list的长度与original_list相同,否则会引发错误。
  • 如果sort_by_list中有重复的值,排序结果可能不是完全确定的,因为Python的排序算法(Timsort)在处理相等元素时可能不会保持原始顺序。

通过这两种方法,你可以灵活地根据另一个数组的值对列表进行排序,以满足不同的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 Python 对波形中的数组进行排序

在本文中,我们将学习一个 python 程序来对波形中的数组进行排序。 假设我们采用了一个未排序的输入数组。我们现在将对波形中的输入数组进行排序。...− 创建一个函数,通过接受输入数组和数组长度作为参数来对波形中的数组进行排序。 使用 sort() 函数(按升序/降序对列表进行排序)按升序对输入数组进行排序。...例 以下程序使用 python 内置 sort() 函数对波形中的输入数组进行排序 − # creating a function to sort the array in waveform by accepting...在这里,给定的数组是使用排序函数排序的,该函数通常具有 O(NlogN) 时间复杂度。 如果应用了 O(nLogn) 排序算法,如合并排序、堆排序等,则上述方法具有 O(nLogn) 时间复杂度。...结论 在本文中,我们学习了如何使用两种不同的方法对给定的波形阵列进行排序。与第一种方法相比,O(log N)时间复杂度降低的新逻辑是我们用来降低时间复杂度的逻辑。

6.9K50

70个NumPy练习:在Python下一举搞定机器学习矩阵运算

翻译 | 王柯凝 责编 | suisui 【导读】Numpy是一个开源的Python科学计算库,专用于存储和处理大型矩阵,相比Python自身的嵌套列表结构要高效很多,是数据分析、统计机器学习的必备工具...难度:1 问题:将python numpy数组a中打印的元素数量限制为最多6个。 输入: 输出: 答案: 24.如何在不截断的情况下打印完整的numpy数组?...答案: 44.如何按列排序二维数组? 难度:2 问题:根据sepallength列对iris数据集进行排序。 答案: 45.如何在numpy数组中找到最频繁出现的值?...难度:2 问题:为给定的数字数组a排序。 输入: 输出: 答案: 55.如何使用numpy对多维数组中的元素进行排序? 难度:3 问题:创建一个与给定数字数组a相同形式的排列数组。...难度:4 问题:从给定的一维数组arr,使用步长生成一个二维数组,窗口长度为4,步长为2,如[[0,1,2,3],[2,3,4,5],[4,5,6,7]..]

20.7K42
  • 算法基础:五大排序算法Python实战教程

    让我们看一下前6种排序算法,看看如何在Python中实现它们! 冒泡排序 冒泡排序通常是在CS入门课程中教的,因为它清楚地演示了排序是如何工作的,同时又简单易懂。...因此,我们不断地获取最小的未排序元素,并将其按排序顺序放置在排序的子列表中。此过程将重复进行,直到列表完全排序。 ? ? 插入排序 插入排序比冒泡排序和选择排序既快又简单。...有趣的是,有多少人在玩纸牌游戏时会整理自己的牌!在每个循环迭代中,插入排序从数组中删除一个元素。然后,它在另一个排序数组中找到该元素所属的位置,并将其插入其中。它重复这个过程,直到没有输入元素。 ?...(2)重复合并,即一次将两个子列表合并在一起,生成新的排序子列表,直到所有元素完全合并到一个排序数组中。 ? ? 快速排序 快速排序也是一种分而治之的算法,如归并排序。...Python实战教程 手把手:用PyTorch实现图像分类器(第一部分) 手把手:用PyTorch实现图像分类器(第二部分) 等你来译: 对混乱的数据进行聚类 初学者怎样使用Keras进行迁移学习 强化学习

    1.5K30

    算法基础:五大排序算法Python实战教程

    一起看一下前6种排序算法,看看如何在Python中实现它们。 冒泡排序 冒泡排序通常是在CS入门课程中教的,因为它清楚地演示了排序是如何工作的,同时又简单易懂。...冒泡排序步骤遍历列表并比较相邻的元素对。如果元素顺序错误,则交换它们。重复遍历列表未排序部分的元素,直到完成列表排序。因为冒泡排序重复地通过列表的未排序部分,所以它具有最坏的情况复杂度O(n^2)。...因此,我们不断地获取最小的未排序元素,并将其按排序顺序放置在排序的子列表中。此过程将重复进行,直到列表完全排序。 ? ? 插入排序 插入排序比冒泡排序和选择排序既快又简单。...有趣的是,有多少人在玩纸牌游戏时会整理自己的牌!在每个循环迭代中,插入排序从数组中删除一个元素。然后,它在另一个排序数组中找到该元素所属的位置,并将其插入其中。它重复这个过程,直到没有输入元素。 ?...(2)重复合并,即一次将两个子列表合并在一起,生成新的排序子列表,直到所有元素完全合并到一个排序数组中。 ? ? 快速排序 快速排序也是一种分而治之的算法,如归并排序。

    1.4K40

    PostgreSQL 教程

    排序 指导您如何对查询返回的结果集进行排序。 去重查询 为您提供一个删除结果集中重复行的子句。 第 2 节. 过滤数据 主题 描述 WHERE 根据指定条件过滤行。...子查询 主题 描述 子查询 编写一个嵌套在另一个查询中的查询。 ANY 通过将某个值与子查询返回的一组值进行比较来检索数据。 ALL 通过将值与子查询返回的值列表进行比较来查询数据。...主题 描述 插入 指导您如何将单行插入表中。 插入多行 向您展示如何在表中插入多行。 更新 更新表中的现有数据。 连接更新 根据另一个表中的值更新表中的值。 删除 删除表中的数据。...连接删除 根据另一个表中的值删除表中的行。 UPSERT 如果新行已存在于表中,则插入或更新数据。 第 10 节....外键 展示如何在创建新表时定义外键约束或为现有表添加外键约束。 检查约束 添加逻辑以基于布尔表达式检查值。 唯一约束 确保一列或一组列中的值在整个表中是唯一的。

    59210

    流畅的 Python 第二版(GPT 重译)(一)

    使用 Python 一段时间后,你能够开始对新接触到的特性做出有根据的、正确的猜测。...请注意,在每个表达式中,对元组进行排序都会破坏信息,因为每个字段的含义由其在元组中的位置给出。 示例 2-7....list.sort与内置的sorted的比较 list.sort方法原地对列表进行排序,即不创建副本。它返回None以提醒我们它改变了接收者¹¹,并且没有创建新列表。...key 一个参数函数,将被应用于每个项目以生成其排序键。例如,当对字符串列表进行排序时,可以使用key=str.lower执行不区分大小写的排序,key=len将按字符长度对字符串进行排序。...⑦ 这会原地对列表进行排序,并返回None(控制台省略了这一点)。 ⑧ 现在fruits已经排序。 警告 默认情况下,Python 按字符代码按字典顺序对字符串进行排序。

    30200

    Python|有趣的shuffle方法

    解决我们的免费随机数据生成练习,掌握Python中的随机数据生成技术。...2.2 Python shuffling list每次都能获得相同的结果 如何使用参数对列表进行无序排列,以便每次进行无序排列时都产生相同的结果?...我们首先定义了一个新的列表来存储新的排序,再用新的方法来对其进行随机排序。 5、使用相同的顺序一次洗牌两个Python列表 假设您想随机播放两个列表,但又想保持相同的随机播放顺序。...6、在Python中改组多维数组 假设您有一个多维数组,并且想要对其进行无序排列。在这个例子中,我使用numpy模块创建一个二维数组。...另外,使用numpy.random.shuffle()方法,我们可以对多维数组进行无序处理。 现在,让我们看看如何在Python中无序排列多维数组。

    3.3K10

    53个Python经典面试题详解

    如何使用reverse函数反转一个列表? 下面的代码对一个列表调用reverse()函数,对其进行修改。该方法没有返回值,但是会对列表的元素进行反向排序。...如何在Python中连接列表? 将2个列表相加,就是将它们连接在一起。但请注意,数组的工作方式不是这样的。...Pickling是Python中序列化和反序列化对象的常用方法。 在下面的示例中,我们对一个字典列表进行序列化和反序列化。...如何在Python中递增和递减一个整数? 可以使用“+=”和“-=”对整数进行递增和递减。...如何按字母顺序对字典进行排序? 你不能对字典进行排序,因为字典没有顺序,但是你可以返回一个已排序的元组列表,其中包含字典中的键和值。

    7.2K30

    27 个问题,告诉你Python为什么这么设计

    为什么有单独的元组和列表数据类型? 列表是如何在CPython中实现的? 字典是如何在CPython中实现的? 为什么字典key必须是不可变的? 为什么 list.sort() 没有返回排序列表?...CPython的列表实际上是可变长度的数组,而不是lisp风格的链表。该实现使用对其他对象的引用的连续数组,并在列表头结构中保留指向该数组和数组长度的指针。...为什么 list.sort() 没有返回排序列表? 在性能很重要的情况下,仅仅为了排序而复制一份列表将是一种浪费。因此, list.sort() 对列表进行了适当的排序。...此函数从提供的可迭代列表中创建新列表,对其进行排序并返回。例如,下面是如何迭代遍历字典并按keys排序: for key in sorted(mydict): ......另一个次要原因是冒号使带有语法突出显示的编辑器更容易工作;他们可以寻找冒号来决定何时需要增加缩进,而不必对程序文本进行更精细的解析。 为什么Python在列表和元组的末尾允许使用逗号?

    6.7K11

    NumPy 笔记(超级全!收藏√)

    ,返回新列表元素在旧列表中的位置(下标),并以列表形式储return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数...lower()数组元素转换为小写upper()数组元素转换为大写split()指定分隔符对字符串进行分割,并返回数组列表splitlines()返回元素中的行列表,以换行符分割strip()移除元素开头或者结尾处的特定字符...算术平均值是沿轴的元素的总和除以元素的数量。  numpy.average()  numpy.average() 函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。 ...numpy.lexsort()  numpy.lexsort() 用于对多个序列进行排序。把它想象成对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列。 ...sort_complex(a)对复数按照先实部后虚部的顺序进行排序。

    4.6K30

    Python 数据分析(PYDA)第三版(二)

    因此,这些是等价的: In [75]: arr2d[0][2] Out[75]: 3 In [76]: arr2d[0, 2] Out[76]: 3 请参见图 4.1 以了解如何在二维数组上进行索引的说明...,但在本书中,我使用它来描述对整个数据数组进行操作,而不是逐个值使用 Python 的for循环。...在数据分析中,where的典型用法是根据另一个数组生成一个新的值数组。假设你有一个随机生成数据的矩阵,并且你想用 2 替换所有正值和用-2 替换所有负值。...将单个元素或列表传递给[]运算符将选择列。 另一个用例是使用布尔 DataFrame 进行索引,比如通过标量比较生成的 DataFrame。...按某个标准对数据集进行排序是另一个重要的内置操作。

    29400

    NumPy知识速记

    高效处理大数组的数据的原因: NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。...在数据分析工作中,where通常用于根据另一个数组而产生一个新的数组。...计算数组分位数最简单的办法是对其进行排序,然后选取特定位置的值: In [203]: large_arr = np.random.randn(1000) In [204]: large_arr.sort...np.unique :返回数组中的唯一值以及已排序的结果 np.in1d :测试一个数组中的值在另一个数组中的成员资格(是否存在),返回一个布尔型数组 常用集合函数 用于数组的文件输入输出...常用函数: 伪随机数生成 numpy.random 模块对Python内置的random进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数。

    1.1K10

    笨办法学 Python · 续 练习 22:后缀数组

    在一段时间里,我正在西雅图的一家公司面试,当时好奇的是如何最有效地创建一个用于可执行二进制文件的diff。我的研究给我带来了后缀数组和后缀树。后缀数组只是,将字符串的所有后缀排序,储存到有序列表中。...后缀树是类似的,但是比列表更像BSTree。这些算法相当简单,一旦你进行了排序操作,它们就具有很快的性能。他们解决的问题是,找到两个字符串之间最长的公共子串(或者在这种情况下是字节列表)。...我只是按顺序取下字符串的后缀,然后对列表进行排序。...挑战练习 在这个练习中,你将会使用我的 Python 小会话并创建自己的后缀数组搜索类。...该类将使用一个字符串,将其拆成后缀列表,然后对其进行以下操作: find_shortest 找到以它开始的最短子串。

    1K20

    Python 学习路线:介绍、基础语法、数据结构、算法、高级主题、框架及异步编程详解

    Python 中的条件语句根据特定条件是否为真或为假执行不同的操作。...在某些方面,元组与列表相似,如索引、嵌套对象和重复,但元组是不可变的,而列表是可变的。...文章链接:Python 集合(Sets)1 字典:在 Python 中,字典是一个有序(从 Py 3.7 开始)无序(Py 3.6 及更早版本)的数据值集合,用于存储数据值,如地图一样使用键值对。...创建新类会创建新类型的对象,允许创建该类型的新实例。每个类实例都可以附加属性以维护其状态。类实例还可以具有由其类定义的方法,用于修改其状态。...生成器推导 生成器推导是在 Python 中使用单行代码创建生成器的简洁方法。它们类似于列表推导,但是与其创建列表不同,它们创建一个生成器对象,根据需要按需生成值。

    27910

    看图学NumPy:掌握n维数组基础知识点,看这一篇就够了

    因此,常见的做法是定义一个Python列表,对它进行操作,然后再转换为NumPy数组,或者用np.zeros和np.empty初始化数组,预分配必要的空间: ?...不过排序函数的功能比Python列表对应函数更少: ? 搜索向量中的元素 与Python列表相反,NumPy数组没有index方法。 ?...因此在二维数组中,如果axis=0是按列,那么axis=1就是按行。 ? 矩阵运算 除了普通的运算符(如+,-,*,/,//和**)以元素方式计算外,还有一个@运算符可计算矩阵乘积: ?...pd.DataFrame(a).sort_values().to_numpy():通过从左向右所有列进行排序 高维数组运算 通过重排一维向量或转换嵌套的Python列表来创建3D数组时,索引的含义为(z...如果不方便使用axis,可以将数组转换硬编码为hstack的形式: ? 这种转换没有实际的复制发生。它只是混合索引的顺序。 混合索引顺序的另一个操作是数组转置。检查它可能会让我们对三维数组更加熟悉。

    6K20

    python数据分析——数据的选择和运算

    代码如下: 2.使用join()方法合并数据集 join()是最常用的函数之一, join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串。...【例】使用Python对给定的数组元素进行求和运算。 关键技术:可以使用Python的sum()函数,程序代码如下所示: 【例】使用Python对给定的数组元素的求乘积运算。...关键技术:可以使用乘法运算符*,程序如下所示: 【例】请使用Python对给定数组的元素进行以e为底的对数函数(log)的操作。...关键技术: np.log()函数实现的是In运算,程序代码如下所示: 【例】请使用Python对给定数组的元素进行以10为底的对数函数(log10)的操作。...关键技术:以学生成绩为例,数学成绩分别为120、89、98、78、65、102、112、56、 79、45的10名同学,现根据分数淘汰35%的学生,该如何处理?

    19310

    学习Numpy,看这篇文章就够啦

    这里笔者再补充四种方法并整理出来: 从Python中的列表、元组等类型创建ndarray数组 使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等 从字节流(raw...bytes)中创建ndarray数组 从文件中读取特定格式,创建ndarray数组 对于方法②再补充5个常用函数: np.full(shape,val):根据shape生成一个数组,每个元素值都是val...np.ones_like(a):根据数组a的形状生成一个全1数组 np.zeros_like(a):根据数组a的形状生成一个全0数组 np.full_like(a,val):根据数组a的形状生成一个数组...在《Python 3智能数据分析快速入门》该节内容中,作者罗列了13个函数及其说明,笔者再补充2个函数: choice(a[,size,replace,p]):从一维数组a中以概率p抽取元素,形成size...字符串操作 Numpy的char模块提供的字符串操作函数可以运用向量化运算来处理整个ndarray,而完成同样的任务,Python的列表则通常借助循环语句遍历列表,并对逐个元素进行相应的处理。

    1.8K21

    Python数学建模算法与应用 - 常用Python命令及程序注解

    根据这个排序值,sorted 函数对元素进行排序。 key 参数接受一个函数作为输入,该函数应用于每个元素,并返回一个用于排序的值。...reverse 是一个可选的参数,表示是否按降序进行排序,默认为 False,表示按升序排序。 使用 key 参数的作用是根据指定的规则生成排序值,然后根据排序值对元素进行排序。...排序将根据生成的排序值进行,而不是直接对元素本身进行比较。 例如,假设有一个列表 nums,我们想按照数字的绝对值进行排序。...sorted 函数将根据这些绝对值对元素进行排序,而不是直接对元素本身进行比较。 通过使用 key 参数,我们可以灵活地定义排序的规则,以适应不同的排序需求。...内置函数之一,它用于对可迭代对象(如列表、元组等)中的每个元素应用指定的函数,并返回一个包含应用结果的新可迭代对象。

    1.5K30

    【16】进大厂必须掌握的面试题-100个python面试

    回答:在Python中,数组和列表具有相同的数据存储方式。但是,数组只能容纳一个数据类型元素,而列表可以容纳任何数据类型元素。...原始数组或列表保持不变。 Q22。您如何在Python中将列表项随机化?...这意味着xrange在运行时实际上不会像range那样生成静态列表。它使用称为yield的特殊技术根据需要创建值。该技术与一种称为生成器的对象一起使用。...回答: 以下代码可用于在Python中对列表进行排序: list = ["1", "4", "0", "6", "9"] list = [int(i) for i in list] list.sort(...会话基本上使您能够记住从一个请求到另一个请求的信息。在烧瓶中,会话使用签名的cookie,因此用户可以查看会话内容并进行修改。

    16.4K30
    领券