首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python:对列表进行排序,然后更改另一个列表

Python:对列表进行排序,然后更改另一个列表
EN

Stack Overflow用户
提问于 2010-04-29 04:41:22
回答 4查看 9.4K关注 0票数 16

我有两个列表:一个包含一组x点,另一个包含y点。Python以某种方式将x点搞混了,或者用户可以。我需要按从低到高的顺序对它们进行排序,并将y点移动到它们的x对应位置。它们在两个单独的列表中..我该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-29 04:42:22

您可以压缩列表并对结果进行排序。默认情况下,排序元组应该在第一个成员上排序。

代码语言:javascript
代码运行次数:0
运行
复制
>>> xs = [3,2,1]
>>> ys = [1,2,3]
>>> points = zip(xs,ys)
>>> points
[(3, 1), (2, 2), (1, 3)]
>>> sorted(points)
[(1, 3), (2, 2), (3, 1)]

然后再次解包:

代码语言:javascript
代码运行次数:0
运行
复制
>>> sorted_points = sorted(points)
>>> new_xs = [point[0] for point in sorted_points]
>>> new_ys = [point[1] for point in sorted_points]
>>> new_xs
[1, 2, 3]
>>> new_ys
[3, 2, 1]
票数 18
EN

Stack Overflow用户

发布于 2010-04-29 04:51:17

代码语言:javascript
代码运行次数:0
运行
复制
>>> xs = [5, 2, 1, 4, 6, 3]
>>> ys = [1, 2, 3, 4, 5, 6]
>>> xs, ys = zip(*sorted(zip(xs, ys)))
>>> xs
(1, 2, 3, 4, 5, 6)
>>> ys
(3, 2, 6, 4, 1, 5)
票数 16
EN

Stack Overflow用户

发布于 2010-04-29 20:53:17

代码语言:javascript
代码运行次数:0
运行
复制
>>> import numpy

>>> sorted_index = numpy.argsort(xs)
>>> xs = [xs[i] for i in sorted_index]
>>> ys = [ys[i] for i in sorted_index]

如果您可以使用numpy.array

代码语言:javascript
代码运行次数:0
运行
复制
>>> xs = numpy.array([3,2,1])
>>> xs = numpy.array([1,2,3])
>>> sorted_index = numpy.argsort(xs)
>>> xs = xs[sorted_index]
>>> ys = ys[sorted_index]
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2732994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档