private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
Process.Start("osk.exe");
}
弹出[5,10]而不是[2,20]
如果我在弹出之前使用了heapq.heapify(h),它会给出正确答案:即[2,20] 如果您更改了任何列表值,是否总是需要在弹出之前堆积列表?
答案 0 :(得分:1)
使用heapq,list.sort()
或任何其他排序模块(如sortedcontainers)时,修改可变项(如列表)会导致内部排序中断。建议在这种情况下使用元组,因为它可以防止意外损坏。
使用heapq或bisect时,模块认为列表已经排序,所使用的算法仅适用于排序列表。修改排序列表将破坏算法并产生意外结果。
如果更改了可变对象,则必须对列表进行重新排序才能使其正常运行。如果您使用heapq,heapq.heapify()
确实是对其进行排序的方式。