我的问题接受一个(listofplane)结构,其中飞机是一个列表[飞机代码,日期,价格]:
该函数还生成一个(listof plane)。我需要根据我的函数接受的另外两个变量(开始日期和结束日期)过滤这个列表,然后按价格(按升序排列)。但是,我仅限于使用二进制搜索概念对价格进行排序:
def binary_search(lst, target):
beginning = ...
end = ...
while ...:
middle = ...
if lst[middle] < target:
...
##update beginning and end
else:
...
##update beginning and end
我想不出二进制搜索是如何让我对列表进行排序的,希望能得到任何帮助。这是我迄今为止所做的(筛选给定的日期变量):
^{pr2}$函数如何工作的示例:
plane_list = [['A11', 215, 300], ['A22', 260, 750], ['A33', 230, 600], ['A44', 300, 400]]
determine(plane_list, 200, 260) => [['A11', 215, 300], ['A33', 260, 600], ['A22', 260, 750]]
复杂的排序函数要简单得多,但也可以使用二进制排序。这可以通过使用lambdas来实现。在
请参阅以下链接了解实施细节:
1)Complex sort with multiple parameters?
2)Advanced sorting criteria for a list of nested tuples
编辑:根据hivert的评论,你也可以使用itemgetter进行排序。实现细节如下:http://wiki.python.org/moin/HowTo/Sorting/#Sort_Stability_and_Complex_Sorts
选择更适合你的方法。在
这可以通过使用python排序算法来完成。你只做二进制搜索的限制,从编码以及性能上看似乎不太好,因为列表不会很大。在
相关问题 更多 >
编程相关推荐