zoukankan      html  css  js  c++  java
  • Python内置函数复习

    filter sorted heapq counter namedtuple  reduce deque pickle islice re.split endswith stat os 

    #filter

    >>> aa = [1,2,3,45,6,7]

    >>> list(filter(lambda x:x>3,aa))

    >>> [45, 6, 7]

     

    #sorted 

    >>> sorted(d.items(),key=lambda x:x[1],reverse=True)

     

    #heapq

    >>> import heapq

    >>> heap.nlargest(3,[1,2,2,2,3,4,4,45,5,6])

     

    #counter

    >>> from collections import Counter

    >>> aa = Counter([1,2,2,2,3,4,4,45,5,6])

    >>> aa.most_common(3)

     

    #namedtuple

    >>> from collection import namedtuple

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

    >>> s2 = Stu('jm',16,'male')

    >>> s2.name

    'jm'

     

    #reduce

    >>> dl = [{'d':3,'a':2,'b':4},{'f':3,'g':2,'b':4},{'d':3,'f':2,'b':4}]

    >>> reduce(lambda a,b : a & b ,map(dict.keys,dl))

     

    #deque

    >>> from collections import deque

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

    >>> q.append(1)

    >>> import pickle

    >>> pickle.dump(q,open('save.pkl','wb'))

    >>> pickle.load(open('save.pkl','rb'))

    deque([1], maxlen=5)

     

    #islice

    >>> from functools import islice

    >>> list(islice(range(10),4,6))

    [4, 5]

    >>> def query_by_order(d,a,b=None):

    ...     a -= 1

    ...     if b is None:

    ...             b= a+1

    ...     return list(islice(d,a,b))

     

    #re.split

    >>> re.split('[;,|]+','ab;ffff|gdhgdjh,jfjje')

    ['ab', 'ffff', 'gdhgdjh', 'jfjje']

     

    #endswith stat os 可执行权限

    >>> import stat

    >>> import os

    >>> for fn in os.listdir():

    ...     if fn.endswith(('.py','.sh')):

    ...             fs = os.stat(fn)

    ...             os.chmod(fn,fs.st_mode | stat.S_IXUSR)

     

    # re.sub 替换字符串

    >>> re.sub(r'(d{4})-(d{2})-(d{2})',r'2/3/1',log)

     

     

    # iterator 和iterable的区别为迭代器只能使用一次,可迭代对象可使用多次
    from
    collections import Iterable, Iterator import requests class WeatherIterator(Iterator): def __init__(self, caties): self.caties = caties self.index = 0 def __next__(self): if self.index == len(self.caties): raise StopIteration city = self.caties[self.index] self.index += 1 return self.get_weather(city) def get_weather(self, city): url = 'http://wthrcdn.etouch.cn/weather_mini?city=' + city r = requests.get(url) data = r.json()['data']['forecast'][0] return city, data['high'], data['low'] class WeatherIterable(Iterable): def __init__(self, cities): self.cities = cities def __iter__(self): return WeatherIterator(self.cities) def show(w): for x in w: print(x) w = WeatherIterable(['北京', '上海', '广州'] * 10) show(w)

    #yield生成器对象自动维护迭代状态

    from collections import Iterable
    
    class PrimeNumbers(Iterable):
        def __init__(self, a, b):
            self.a = a
            self.b = b
    
        def __iter__(self):
            for k in range(self.a, self.b + 1):
                if self.is_prime(k):
                    yield k
    
        def is_prime(self, k):
            return False if k < 2 else all(map(lambda x: k % x, range(2, k)))
    
    pn = PrimeNumbers(1, 30)
    for n in pn:
        print(n)
    #reversed 反向迭代实现
    from
    decimal import Decimal class FloatRange: def __init__(self, a, b, step): self.a = Decimal(str(a)) self.b = Decimal(str(b)) self.step = Decimal(str(step)) def __iter__(self): t = self.a while t <= self.b: yield float(t) t += self.step def __reversed__(self): t = self.b while t >= self.a: yield float(t) t -= self.step fr = FloatRange(3.0, 4.0, 0.2) for x in fr: print(x) print('-' * 20) for x in reversed(fr): print(x)
  • 相关阅读:
    期末考试(优先队列)
    看病要排队《优先队列》
    Windows Message Queue(优先队列)
    Stones(优先队列)
    懒省事的小明(优先队列)
    产生冠军(set,map,拓扑结构三种方法)
    Web轻量级扫描工具Skipfish
    Web侦察工具HTTrack (爬取整站)
    文件上传漏洞绕过技巧
    Python爬虫之selenium的使用(八)
  • 原文地址:https://www.cnblogs.com/Erick-L/p/11161777.html
Copyright © 2011-2022 走看看