根据(a, b)
对两个列表a
进行排序,并分别返回两个已排序的列表,如下所示,这是正确的。
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
答案 0 :(得分: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]