Skip to main content
 首页 » 编程设计

python之如何根据python中的数组值对列表进行排序

2025年05月04日14mfrbuaa

假设我有:

list = ['apple','banana','pear','orange'] 
values = [3,1,2,4] 

我需要根据“值”向量中的值对列表字符串进行排序。在 MatLab 中,我会合并两者然后对向量进行排序,但我在这里似乎做不到。有什么想法吗?

谢谢!

请您参考如下方法:

这对你有用。使用zip对两个列表进行配对,然后排序,最后得到新的列表。

>>> mylist = ['apple','banana','pear','orange']  
>>> values = [3,1,2,4] 
>>> [i[1] for i in sorted(zip(values, mylist))] 
 ['banana', 'pear', 'apple', 'orange'] 

顺便说一句,不要使用 list 来命名你的列表。

你也可以使用itertools.izip,它类似于zip(),除了它返回一个迭代器而不是一个列表,因此你可以获得更好的性能

>>> from itertools import izip 
>>> mylist = ['apple','banana','pear','orange']  
>>> values = [3,1,2,4] 
>>> [i[1] for i in sorted(izip(values, mylist))] 
 ['banana', 'pear', 'apple', 'orange']