排序列表 - 一种pythonic方式

时间:2016-08-14 18:18:13

标签: python-2.7

根据(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

1 个答案:

答案 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]