堆栈与python中的列表

时间:2016-03-26 11:15:53

标签: python python-2.7

    private void TextBox_GotFocus(object sender, RoutedEventArgs e)
    {
        Process.Start("osk.exe");
    }

弹出[5,10]而不是[2,20]

如果我在弹出之前使用了heapq.heapify(h),它会给出正确答案:即[2,20] 如果您更改了任何列表值,是否总是需要在弹出之前堆积列表?

1 个答案:

答案 0 :(得分:1)

使用heapqlist.sort()或任何其他排序模块(如sortedcontainers)时,修改可变项(如列表)会导致内部排序中断。建议在这种情况下使用元组,因为它可以防止意外损坏。

使用heapqbisect时,模块认为列表已经排序,所使用的算法仅适用于排序列表。修改排序列表将破坏算法并产生意外结果。

如果更改了可变对象,则必须对列表进行重新排序才能使其正常运行。如果您使用heapqheapq.heapify()确实是对其进行排序的方式。