zoukankan      html  css  js  c++  java
  • python 学习笔记一 (数据结构和算法)

    2018年刚刚过完年,从今天起,做一个认真的技术人。开始进入记笔记阶段。

    python内置了很多数据结构,list , set,dictionary 

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

    1.1 通过赋值的方式,只要等号左右的变量个数与结构与序列一致

    p=(4,5)

    x,y=p

    1.2不只是序列,只要是可迭代的对象,都可以进行分解

    s='hello'

    a,b,c,d,e = s 

    如果想丢弃某些变量, 可以选一个用不到的变量,作为丢弃值的名称。

    data=['ABC',  50, (2012,1,2)]

    _, price , _ = data , 这里用到的是下划线

    records = [

    ('foo', 1, 2), 

    ('bar', 'hello'),

    ('foo', 3, 4)

    ]

     def do_foo(x, y ):

        print ('foo', x, y)

    for  tag, *args in  records:

        if tag == 'foo':

            do_foo(*args)

    1.3 保存最后的几个变量

    collections.deque

    q = deque(maxlen=3),长度为3的一个队列

    q.append(1)

    q.append(2)

    q.append(3)

    q.append(4)

    q.appendleft() 从左侧入参数, q.popleft(), q.pop()

    from collections import  deque

    def search(lines, pattern , history =5 ):
    previous_lines = deque(maxlen=history)
    for line in lines:
    if pattern in line:
    yield line, previous_lines
    previous_lines.append(line)

    if __name__ == '__main__':
    with open('some.txt') as f :
    for line , previouslines in search(f, 'python', 5):
    for pline in previouslines:
    print(pline, end='& ')
    print(line, end='% ')
    print('-'*20)

    1.4 找出最大或者最小的n个元素
    import heapq
    nums=[1,3,2,9,4,8,7,6]
    smalllist = heapq.nsmallest(3,nums)
    biglist = heapq.nlargest(3,nums)

    1.5在list中可以经常用到一个列表推导式:
    x = 'abcde'
    y = 'hijkl'
    comp = [(m,n) for m in x if m >'a' for n in y if n >'h']


    推导式与filter, map的比较:
    filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list
    map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回

    生成器的表达式:
    如果数据比较多时,list明显需要占用太多的内存,生成器才是比较好的选择



  • 相关阅读:
    BufferedOutPutStream 字节缓冲输出流 BufferedIntPutSream 字节缓冲输入流
    Properpies
    jdk9的新特性
    try catch finally处理流的异常
    续写和换行
    write写入
    flush close
    Postman功能详解
    HyLoad压测的使用
    找出Window/Linux下 占用端口的进程
  • 原文地址:https://www.cnblogs.com/yingchen/p/8455507.html
Copyright © 2011-2022 走看看