當前位置: 首頁>>代碼示例>>Python>>正文


Python heapq.heapify方法代碼示例

本文整理匯總了Python中heapq.heapify方法的典型用法代碼示例。如果您正苦於以下問題:Python heapq.heapify方法的具體用法?Python heapq.heapify怎麽用?Python heapq.heapify使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在heapq的用法示例。


在下文中一共展示了heapq.heapify方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: unload

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def unload(self, execute=True):
        commands = CommandList()

        undoWork = ConfigObject.prioritizeConfigs(self.currentConfig.values())
        heapq.heapify(undoWork)

        while undoWork:
            prio, config = heapq.heappop(undoWork)
            commands.extend(config.revert(self.currentConfig))

        # Finally, execute the commands.
        if execute and self.execCommands:
            self.execute(commands)

        self.previousCommands = commands
        self.currentConfig = dict()
        return True 
開發者ID:ParadropLabs,項目名稱:Paradrop,代碼行數:19,代碼來源:manager.py

示例2: merge

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def merge(lists):
    merged_list = []

    heap = [(lst[0], i, 0) for i, lst in enumerate(lists) if lst]
    
    heapq.heapify(heap)

    while heap:
        #print(heap)
        val, list_ind, element_ind = heapq.heappop(heap)

        merged_list.append(val)

        if element_ind + 1 < len(lists[list_ind]):
            next_tuple = (lists[list_ind][element_ind + 1],
                          list_ind,
                          element_ind + 1)
            heapq.heappush(heap, next_tuple)
    return merged_list

#Test Cases 
開發者ID:amitrajitbose,項目名稱:Competitive_Programming,代碼行數:23,代碼來源:merge_k_Sorted_lists.py

示例3: highFive

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def highFive(self, items):
        """
        :type items: List[List[int]]
        :rtype: List[List[int]]
        """
        record = dict()
        
        for item in items:
            sd, sc = item[0], item[1]
            
            if sd not in record:
                record[sd] = [sc]
                heapq.heapify(record[sd])
            else:
                heapq.heappush(record[sd], sc)
                if len(record[sd]) > 5:
                    heapq.heappop(record[sd])
                    print record[sd]
        res = []
        for key, val in record.items():
            res.append([key, sum(val) // 5])
        # print record
        return res 
開發者ID:JiayangWu,項目名稱:LeetCode-Python,代碼行數:25,代碼來源:1086-前五科的均分.py

示例4: DeleteDigits_error

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def DeleteDigits_error(self, A, k):
        """
        Remove and keep the n-k largest numbers
        heap: O(n lg (n-k))

        error in case: 254193, 1

        :param A: A positive integer which has N digits, A is a string.
        :param k: Remove k digits.
        :return: A string
        """
        lst = map(int, list(str(A)))
        m = len(lst)-k

        tuples = [(-lst[i], i) for i in xrange(m)]  # negative sign for max heap
        heapq.heapify(tuples)
        for i in xrange(m, len(lst)):
            if -tuples[0][0] > lst[i]:
                heapq.heappop(tuples)
                heapq.heappush(tuples, (-lst[i], i))

        rets = [elt[1] for elt in tuples]
        rets.sort()
        rets = map(lambda x: str(lst[x]), rets)
        return "".join(rets) 
開發者ID:algorhythms,項目名稱:LintCode,代碼行數:27,代碼來源:Delete Digits.py

示例5: cancel

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def cancel(handle):
        """Provided its handle, cancels the execution of a timeout."""

        handles = TimeoutScheduler._handles
        with TimeoutScheduler._mutex:
            if handle in handles:
                # Time complexity is O(n)
                handle._cb = None
                handles.remove(handle)
                heapq.heapify(handles)

                if len(handles) == 0:
                    # set the event to stop the wait - this kills the thread
                    TimeoutScheduler._event.set()
            else:
                raise Scapy_Exception("Handle not found") 
開發者ID:secdev,項目名稱:scapy,代碼行數:18,代碼來源:isotp.py

示例6: mergeSort

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def mergeSort(seqs):
    """
    perform merge sort on a list of sorted iterators
    """
    queue = []
    for s in seqs:
        s = assertIsSorted(s)
        it = iter(s)
        try:
            queue.append((it.next(), it.next))
        except StopIteration:
            pass
    heapq.heapify(queue)
    while queue:
        item, it = queue[0]
        yield item
        try:
            heapq.heapreplace(queue, (it(), it))
        except StopIteration:
            heapq.heappop(queue)

# --------------------------------------------------------------------------- 
開發者ID:sequitur-g2p,項目名稱:sequitur-g2p,代碼行數:24,代碼來源:IterMap.py

示例7: schedule

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def schedule(plugin):
    # List of scheduled calls with next runtime, function and interval
    next_runs = [
        (time() + 300, clear_temporary_exclusion, 300),
        (time() + plugin.probe_interval, start_probe, plugin.probe_interval),
        (time() + 1, poll_payments, 1),
    ]
    heapq.heapify(next_runs)

    while True:
        n = heapq.heappop(next_runs)
        t = n[0] - time()
        if t > 0:
            sleep(t)
        # Call the function
        n[1](plugin)

        # Schedule the next run
        heapq.heappush(next_runs, (time() + n[2], n[1], n[2])) 
開發者ID:lightningd,項目名稱:plugins,代碼行數:21,代碼來源:probe.py

示例8: merge

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def merge(*iterables):
    """
    Merge sorted iterables into one sorted iterable.
    @param iterables: arguments are iterables which yield items in sorted order.
    @return: an iterable of all items generated by every iterable in
    C{iterables} in sorted order.
    """
    heap = []
    for iterable in iterables:
        iterator = iter(iterable)
        for value in iterator:
            heap.append((value, iterator))
            break
    heapq.heapify(heap)
    while heap:
        value, iterator = heap[0]
        yield value
        for value in iterator:
            heapq.heapreplace(heap, (value, iterator))
            break
        else:
            heapq.heappop(heap) 
開發者ID:apple,項目名稱:ccs-calendarserver,代碼行數:24,代碼來源:ical.py

示例9: mergeKLists

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
        hp = []
        nodes = list(lists)
        for idx in range(len(nodes)):
            node = nodes[idx]
            if node is not None:
                hp.append((node.val, idx))
        heapq.heapify(hp)
        head = None
        prev = None
        while hp:
            val, idx = heapq.heappop(hp)
            node = nodes[idx]
            if head is None:
                head = node
            if prev is not None:
                prev.next = node
            ne = node.next
            if ne is not None:
                heapq.heappush(hp, (ne.val, idx))
                nodes[idx] = ne
            prev = node
        return head 
開發者ID:franklingu,項目名稱:leetcode-solutions,代碼行數:25,代碼來源:Solution.py

示例10: push_all

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def push_all(self, record_shard_pairs):
        """Push multiple (record, shard) pairs at once, with only one :meth:`heapq.heapify` call to maintain order.

        :param record_shard_pairs: list of ``(record, shard)`` tuples
            (see :func:`~bloop.stream.buffer.RecordBuffer.push`).
        """
        # Faster than inserting one at a time; the heap is sorted once after all inserts.
        for record, shard in record_shard_pairs:
            item = heap_item(self.clock, record, shard)
            self.heap.append(item)
        heapq.heapify(self.heap) 
開發者ID:numberoverzero,項目名稱:bloop,代碼行數:13,代碼來源:buffer.py

示例11: _resort

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def _resort(self):
        heapq.heapify(self.queue) 
開發者ID:binux,項目名稱:pyspider,代碼行數:4,代碼來源:task_queue.py

示例12: update_priority

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def update_priority(self) -> None:
        heapq.heapify(self.vertices) 
開發者ID:wangzheng0822,項目名稱:algo,代碼行數:4,代碼來源:dijkstra.py

示例13: __next__

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def __next__(self):
            try:
                self.dt = advance_iterator(self.gen)
            except StopIteration:
                if self.genlist[0] is self:
                    heapq.heappop(self.genlist)
                else:
                    self.genlist.remove(self)
                    heapq.heapify(self.genlist) 
開發者ID:MediaBrowser,項目名稱:plugin.video.emby,代碼行數:11,代碼來源:rrule.py

示例14: _iter

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def _iter(self):
        rlist = []
        self._rdate.sort()
        self._genitem(rlist, iter(self._rdate))
        for gen in [iter(x) for x in self._rrule]:
            self._genitem(rlist, gen)
        exlist = []
        self._exdate.sort()
        self._genitem(exlist, iter(self._exdate))
        for gen in [iter(x) for x in self._exrule]:
            self._genitem(exlist, gen)
        lastdt = None
        total = 0
        heapq.heapify(rlist)
        heapq.heapify(exlist)
        while rlist:
            ritem = rlist[0]
            if not lastdt or lastdt != ritem.dt:
                while exlist and exlist[0] < ritem:
                    exitem = exlist[0]
                    advance_iterator(exitem)
                    if exlist and exlist[0] is exitem:
                        heapq.heapreplace(exlist, exitem)
                if not exlist or ritem != exlist[0]:
                    total += 1
                    yield ritem.dt
                lastdt = ritem.dt
            advance_iterator(ritem)
            if rlist and rlist[0] is ritem:
                heapq.heapreplace(rlist, ritem)
        self._len = total 
開發者ID:MediaBrowser,項目名稱:plugin.video.emby,代碼行數:33,代碼來源:rrule.py

示例15: extend

# 需要導入模塊: import heapq [as 別名]
# 或者: from heapq import heapify [as 別名]
def extend(self, items):
        """
        Extend heap by an iterable object. The heap will be reheapified.
        :param items: priority items
        """
        self._req_heap.extend(items)
        heapq.heapify(self._req_heap) 
開發者ID:mars-project,項目名稱:mars,代碼行數:9,代碼來源:assigner.py


注:本文中的heapq.heapify方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。