【发布时间】:2014-03-27 12:06:20
【问题描述】:
给定
a = [1,4,5,3,2,6,0]
b = ['b','e','f','d','c','g','a']
订单b就位,b的预期顺序在a的相应位置元素中可用。
输出将是
['a','b','c','d','e','f','g']
尝试其他类似的输入集。
a = [4,0,1,3,2]
b = ['E','A','B','D','C']
我可以使用第三个列表来完成它,即使sorted() 创建了第三个列表,但关键是对b 进行排序
print sorted(b,key=lambda bi : a[b.index(bi)])
问题的核心是如何防止对b 中已经迭代的项目进行迭代。
【问题讨论】:
-
要就地排序,你有
.sort() -
B = dict((v, i) for i, v in enumerate(b))可以帮助您,如果您的列表中有独特的元素 -
您可以同时对两个列表进行简单的冒泡排序。
-
.sort()也接受key参数。 -
别忘了 b.index(bi) 在 O(n) 中运行,这会将排序减慢到 O(n^2 log n)。这比冒泡排序更糟糕。另外,如果
a包含重复项,它也不起作用。
标签: python algorithm list sorting