• 基础知识(一)


    1、将序列分解为单独的变量

    1.1、任何序列(或可迭代的对象)都可以通过一个简单的赋值操作来分解为单独的便利。(唯一要求:变量的总和和结构要与序列相吻合。如果元素的数量不匹配,将会有错误提示)

     1 例1:
     2 >>> p =(4,5)
     3 >>> x,y=p
     4 >>> x
     5 4
     6 例2:
     7 >>> data = ['ACME',50,99.9,(2017,11,17)]
     8 >>> name,shares,price,date=data
     9 >>> date
    10 (2017, 11, 17)
    11 >>> 
    View Code

    1.2、在分解时,通常可以选用一个不常用的变量名来丢弃某些特定的值

    1 >>> data = ['ACME',50,99.9,(2017,11,17)]
    2 >>> _,shares,price,_=data
    3 >>> shares
    4 50
    View Code

    1.3、需要从某个可迭代的对象中分解出N个元素,但是可迭代对象的对象超过N,这会导致出现“分解的值过多”的异常。这时可以使用"*表达式 "。

    例:用户记录

    1 >>> result = ('Dave','dave@126.com','山西太原','010-7788990','0351-588888')
    2 >>> name,email,addrss,*phone_numbers = result
    3 >>> phone_numbers
    4 ['010-7788990', '0351-588888']
    5 >>>
    View Code

    2、collections(集合模块)

    2.1使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。

    deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:

    1 >>> from collections import deque
    2 >>> q = deque(maxlen=3)
    3 >>> q.append(1)
    4 >>> q.append(2)
    5 >>> q.append(3)
    6 >>> q.append(4)
    7 >>> q
    8 deque([2, 3, 4], maxlen=3)
    9 >>> 
    View Code

    2.2如果不指定队列的大小,将会得到一个无界限的队列。其次它还有appendleft,popleft这两个方法

    1 >>>q = deque([1,2,3])
    2 >>>q.appendleft(4)
    3 >>>q
    4 >>>deque([4, 1, 2, 3])
    5 >>>q.popleft()
    6 >>>4
    7  
    View Code

    3、找到最大或最小的N个元素

    1 import heapq
    2 nums = [1,8,2,23,7,-4,18,23,42,37,2]
    3 print(heapq.nlargest(3,nums))
    4[42, 37, 23]
    5 print(heapq.nsmallest(3,nums))
    6[-4, 1, 2]
    
    View Code

    4、实现优先级队列

  • 相关阅读:
    shell遍历文件夹并执行命令
    安装PIL的坑
    iptables不小心把127.0.0.1封了,导致redis连不上
    python读取中文
    不要在基类析构函数中调用纯虚函数,否则运行时会报错“pure virtual method called”
    阿里云64位centos6.3系统上编译安装redis
    Git
    Easy Mock
    Sortable
    几个框架
  • 原文地址:https://www.cnblogs.com/xb88/p/7854241.html
Copyright © 2020-2023  润新知