Python:如何对数组X进行排序,但对Y进行相同的相对排序?

Python:如何对数组X进行排序,但对Y进行相同的相对排序?,第1张

概述例如 X=[5,6,2,3,1]Y=[7,2,3,4,6] 我排序X: X=[1,2,3,5,6] 但是我希望将相同的相对排序应用于Y,因此数字保持在相同的位置,如前所述: Y=[6,3,4,7,2] 我希望这是有道理的! 通常,您为此执行zip-sort-unzip >>> X = [5,6,2,3,1]>>> Y = [7,2,3,4,6] 现在将它们排序: >>> sorted(zip( 例如

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 alreadyY = [2,6] #Not already sorted.

通过上面的“食谱”,在一天结束时,您将得到:

X = (1,7)Y = (1,6)

这可能是出乎意料的.要解决这个问题,您可以将键参数传递给sorted:

from operator import itemgetterX,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)
总结

以上是内存溢出为你收集整理的Python:如何对数组X进行排序,但对Y进行相同的相对排序?全部内容,希望文章能够帮你解决Python:如何对数组X进行排序,但对Y进行相同的相对排序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存