zoukankan      html  css  js  c++  java
  • python实用技巧总结(一)

    一、在列表,字典,集合中根据条件筛选数据

      过滤负数(例)

        filter函数

          列表List(filter(lambda x:x>=0,data))

          字典dict(filter(lambda item:item[1]>=0,data.items()))

          集合set(filter(lambda x:x>=0,data))

        生成式(推荐)

          列表[x for x in data if x>=0]

          字典{k:v for k,v in data.items if v>=0}

          集合{x for x in data if x>=0}

    二、为元组中每个元素(索引)命名,提高元素可读性

      方法一:使用枚举类型代替索引

        >>> from enum import IntEnum

        >>> class StudentEnum(IntEnum):

        NAME=0

        AGE=1

        SEX=2

        EMAIL=3

      方法二:为元组中的索引定义常量

        NAME=0

        AGE=1

        SEX=2

        EMAIL=3

      方法三:collections.namedtuple(推荐)

        >>> from collections import namedtuple

        >>> Student = namedtuple('Student',['name','age','sex'])

        >>> s=Student('zcy',12,1)

        >>> s[0]

        'zcy'

        >>> s[1]

        12

        >>> s[2]

        1

        >>> s.name

        'zcy'

    三、根据字典的值对字典中键值对进行排序

      将字典中的各项转换为元组,使用内置函数sorted()进行排序

        方案1:将字典中的项转化为(值,键)元组,然后使用sorted函数

        方案2:传递sorted函数的key参数

    四、统计序列中元素的频度并排序

      方法一:将序列转换为字典{元素:频度},对字典根据值排序

        >>> data=[randint(0,20) for _ in range(10)]

        >>> data

        [16, 16, 15, 16, 18, 6, 8, 19, 5, 20]

        >>> dft={k:0 for k in data}

        >>> dft

        {16: 0, 15: 0, 18: 0, 6: 0, 8: 0, 19: 0, 5: 0, 20: 0}

        for x in data:

        dft[x]+=1

        >>> sorted([(v,k) for k,v in dft.items()],reverse=True)

        [(3, 16), (1, 20), (1, 19), (1, 18), (1, 15), (1, 8), (1, 6), (1, 5)]

      方法二:标准库collections.Counter对象

        c=Counter(data)

        >>> c

        Counter({16: 3, 15: 1, 18: 1, 6: 1, 8: 1, 19: 1, 5: 1, 20: 1})

        >>> c.most_common()

        [(16, 3), (15, 1), (18, 1), (6, 1), (8, 1), (19, 1), (5, 1), (20, 1)]

    五、快速找到多个字典的公共键

      方法一:集合(set)交集(&)操作

        >>> common_keys=set(d1.keys())&set(d2.keys())&set(d3.keys())

        >>> common_keys

        {'f', 'd'}

      方法二:map和reduce

      方法三:列表解析式(传统for循环)

        >>> common_keys=[k for k in d1.keys() if k in d2.keys()and k in d3.keys()]

        >>> common_keys

        ['d', 'f']

    六、保持字典有序

      解决方法:collection.OrderedDict

      Python3.6开始dict已经是有序字典

        >>> from collections import OrderedDict

        >>> od=OrderedDict()

        >>> od[1]='a'

        >>> od[2]='b'

        >>> od[3]='c'

        >>> od.keys()

        odict_keys([1, 2, 3])

        >>> list(od.keys())

        [1, 2, 3]

    七、实现用户历史记录功能

      方法:队列

      使用标准库collections中的deque,是一个双端循环队列

        >>> q=deque([],5)

        >>> q.append(1)

        >>> q.append(2)

        >>> q.pop()

        2

        >>> q.append(2)

        >>> q.append(3)

        >>> q.popleft()

        1

        使用pickle模块将历史记录存储到硬盘

          >>> import pickle

          >>> pickle.dump(q,文件对象)

    八、拆分多种分隔符的字符串

      方法一:多次使用字符串的split方法

      方法二:re模块的split方法(推荐,可一次处理多个分隔符)

     九、判断字符串是否以特定字符串结尾

      方法一:str.endswith()

    十、调整字符串中文本的格式

      re.sub(p,r,s)

        p:以正则表达式表达的目标格式

        r:以正则表达式表示的被替换部分

        s:要修改的字符串

    十一、字符串拼接

      方法一:迭代列表,连续使用‘+’操作依次拼接每一个字符串(少量字符串拼接)

      方法二:使用str.join()方法,更加快速的拼接列表所有字符串。(大量字符串推荐推荐)

    十二、对字符串进行左、右、居中对齐

      方法一:字符串的str.ljust (),str.rjust(),str.center()进行左对齐,右对齐,居中操作,第一个参数为总的长度,第二个参数(可选)为用来填充的符号

        >>> s='abc'

        >>> t=s.ljust(10,'*')

        >>> t

        'abc*******'

        >>> p=s.ljust(10)

        >>> p

        'abc       '

      方法二:使用format()方法,传递类似'<20','>20','^20'参数完成同样任务

      

  • 相关阅读:
    Redis
    Redis
    Redis
    Redis
    Redis
    Redis
    Distributed
    Sentinel
    Archi
    Redis
  • 原文地址:https://www.cnblogs.com/burningcarbon/p/12432551.html
Copyright © 2011-2022 走看看