2016-08-14 60 views
1

根据a排序两个列表(a, b)并单独返回两个排序列表,正如下面所做的那样是正确的。排序列表 - pythonic方式

a = ['apple','carrot','banana'] 
b = [5,10,15] 

s = sorted(zip(a,b)) 
a,b = map(list, zip(*s)) 

print a 
print b 

['apple', 'banana', 'carrot'] 
[5, 15, 10] 

但是,没有更好的方式来做到这一点? Given condition: Two lists, a and b. Result: As printed above

PS这是Python 2.7版

回答

1

我会做这种方式,因为我有一个厌恶map,但它不是明显优于自己的方式。我的理由很简单,大多数Python程序员都很容易理解列表理解,但功能编程概念并不那么重要,因为语言并不是真正为函数式编程设置的。

In [6]: a = ['apple','carrot','banana'] 

In [7]: b = [5,10,15] 

In [8]: A, B = (list(e) for e in zip(*sorted(zip(a,b)))) 

In [9]: A 
Out[9]: ['apple', 'banana', 'carrot'] 

In [10]: B 
Out[10]: [5, 15, 10]