PythonCookbook筆記

寫出更Pythonic的代碼。

1. 將序列分解爲單獨的變量,直接將序列賦值給變量便可。可是要注意:

  • 變量的數量要和序列中元素的數量相等。python

  • 例子以下:
    <!--more-->app

    >>>x, y = (4,5)
    >>>x
    4
    >>>y
    5
    >>>a,_,(c,d) = [1,2,(3,4)]
    >>>a
    1
    >>>_
    2
    >>>c
    3
    >>>d
    4
  • 不僅是元組與列表能夠,任何可迭代對象均可以,包括字符串,文件,迭代器,生成器等。函數

  • 能夠用 _ 做爲變量名,表示要丟棄的值。code

2. 當序列特別長時,而咱們又只需某一部分的話能夠用 *arg來表示。

  • 好比要取到序列中除去第一項和最後一項的值,求平均值。對象

def drop_first_last(grades):
     first, *middle, last = grades
     return avg(middle)
  • *arg 也能夠放到第一個位置,事實上能夠放到任何位置,表示剩餘的全部值。隊列

3.從隊列兩端添加或彈出元素的複雜度爲O(1),這和列表不一樣,當從列表頭部插入或移除元素時,列表的複雜度爲O(N).

>>>from collections import deque
>>>q = deque(1)
>>>q = deque(2)
>>>q = deque(3)
>>>q
deque([1,2,3])
>>>q.appendleft(4)
>>>q
deque([4,1,2,3])
>>>q.insert(0,8)#這種插入方法須要首先將列表中的全部元素向後移一個單位

4.找到最大或最小的N個元素

  • heapq 模塊中有兩個函數 nlargest()和nsmallest()字符串

import heapq
 nums = [1, 2, 5, 34, -5, 42, -9]
 print(heapq.nlargest(3,nums))# Prints [42,34,5]
 print(heapq.nsmallest(3,nums))#Prints [-9,-5,1]
相關文章
相關標籤/搜索