Python:如何对数组X进行排序,但对Y进行相同的相对排序?
发布时间:2020-12-20 12:29:31 所属栏目:Python 来源:网络整理
导读:例如 X=[5,6,2,3,1]Y=[7,4,6] 我排序X: X=[1,5,6] 但是我希望将相同的相对排序应用于Y,因此数字保持在相同的位置,如前所述: Y=[6,7,2] 我希望这是有道理的! 解决方法 通常,您为此执行zip-sort-unzip X = [5,1] Y = [7,6] 现在将它们排序: sorted(zip(X,Y
例如
X=[5,6,2,3,1] Y=[7,4,6] 我排序X: X=[1,5,6] 但是我希望将相同的相对排序应用于Y,因此数字保持在相同的位置,如前所述: Y=[6,7,2] 我希望这是有道理的! 解决方法
通常,您为此执行zip-sort-unzip
>>> X = [5,1] >>> Y = [7,6] 现在将它们排序: >>> sorted(zip(X,Y)) [(1,6),(2,3),(3,4),(5,7),(6,2)] 用“解压缩”(zip(* …))配对 >>> zip(*sorted(zip(X,Y))) [(1,2)] 你可以解压缩: >>> X,Y = zip(*sorted(zip(X,Y))) >>> X (1,6) >>> Y (6,2) 现在你有了元组而不是列表对象,但如果你真的需要,你可以将其转换回来. 正如评论中指出的那样,这确实引入了对排序中第二个列表的轻微依赖:考虑列表: X = [1,1,7] #sorted already Y = [2,6] #Not already sorted. 通过上面的“食谱”,在一天结束时,您将得到: X = (1,7) Y = (1,6) 这可能是出乎意料的.要解决这个问题,您可以将键参数传递给sorted: from operator import itemgetter X,Y),key=itemgetter(0))) 演示: >>> X [1,7] >>> Y [2,6] >>> XX,YY = zip(*sorted(zip(X,Y))) >>> XX (1,7) >>> YY (1,6) >>> from operator import itemgetter >>> XX,key=itemgetter(0))) >>> XX (1,7) >>> YY (2,6) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |