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]
相关文章
相关标签/搜索