zoukankan      html  css  js  c++  java
  • Python CookBook(self report)

    Python CookBook

    中文版:https://python3-cookbook.readthedocs.io/zh_CN/latest/copyright.html

    英文版:https://d.cxcore.net/Python/Python_Cookbook_3rd_Edition.pdf

    Data Structures and Algorithms

    start expressions

    items = [1, 10, 7, 4, 5, 9] 
    def sum(items):
    ... head, *tail = items
    ... return head + sum(tail) if tail else head
    ...
    >>> head, *tail = items
    >>> head
    1
    >>> tail
    [10, 7, 4, 5, 9]
    >>> sum(items)
    36

    Deque

    Using deque(maxlen=N) creates a fixed-sized queue. When new items are added and the queue is full, the oldest item is automatically removed. 

    from collections import deque
    >>> q = deque(maxlen=3) >>> q.append(1) >>> q.append(2) >>> q.append(3) >>> q deque([1, 2, 3], maxlen=3) >>> q.append(4) >>> q

    deque([1, 2, 3])
    >>> q.appendleft(4)
    >>> q deque([4, 1, 2, 3])
    >>> q.pop() 3
    >>> q deque([4, 1, 2])
    >>> q.popleft() 4  

    ★ Adding or popping items from either end of a queue has O(1) complexity. This is unlike a list where inserting or removing items from the front of the list is O(N).

    Heapq

    The heapq module has two functions—nlargest() and nsmallest()—that do exactly what you want. For example:
    import heapq
    nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
    print(heapq.nlargest(3, nums)) # Prints [42, 37, 23]
    print(heapq.nsmallest(3, nums)) # Prints [-4, 1, 2]
    Both functions also accept a key parameter that allows them to be used with more
    complicated data structures. For example:
    portfolio = [
     {'name': 'IBM', 'shares': 100, 'price': 91.1},
     {'name': 'AAPL', 'shares': 50, 'price': 543.22},
     {'name': 'FB', 'shares': 200, 'price': 21.09},
     {'name': 'HPQ', 'shares': 35, 'price': 31.75},
     {'name': 'YHOO', 'shares': 45, 'price': 16.35},
     {'name': 'ACME', 'shares': 75, 'price': 115.65}
    ]
    cheap = heapq.nsmallest(3, portfolio, key=lambda s: s['price'])
    expensive = heapq.nlargest(3, portfolio, key=lambda s: s['price'])
    声明:如果涉及侵权请联系本人‘删除’,谢谢~
  • 相关阅读:
    Vue模板
    一个人的旅行
    o2o家庭助手demo
    学习html5 app项目开发
    我最近的一段时间技术总结
    我最近的工作、生活状态
    swift学习初步(四)-- 函数
    swift学习初步(三)--控制流操作
    swift学习(二)--基本运算符、字符串、集合操作
    Swift学习初步(一)
  • 原文地址:https://www.cnblogs.com/presleyren/p/11837458.html
Copyright © 2011-2022 走看看