zoukankan      html  css  js  c++  java
  • 基础知识(一)

    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、实现优先级队列

  • 相关阅读:
    wrod2010删除分节符
    英文找工作网站
    win7中如何关闭“windows正在下载更新”
    设置pdf为护眼绿色
    如何查询Lancome生产及保质期
    (转)浅谈.NET下的多线程和并行计算(二)线程基本知识
    (转)浅谈.NET下的多线程和并行计算(一)前言
    (转载)一步一步学Linq to sql系列文章
    LINQ简介和LINQ to SQL语句之Where
    浅谈sql 、linq、lambda 查询语句的区别
  • 原文地址:https://www.cnblogs.com/xb88/p/7854241.html
Copyright © 2011-2022 走看看