2016-08-14 92 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]