20220514 最后更新时间:2022年05月14日 ## itertools ```python # itertools — Functions creating iterators for efficient looping import itertools natuals =itertools.count(1) # for n in natuals: # print(n) # 此类写法会产生无限序列,但是可以通过takewhile()等函数来截取一个有限的序列 ns = itertools.takewhile(lambda x:x<=10,natuals) print(ns) for d in itertools.chain('ABC','XYZ'): print(d) for key, group in itertools.groupby('AAABBBCCAAA'): print(key, list(group)) ``` > From:https://docs.python.org/3/library/itertools.html > > **Infinite iterators:** > > | Iterator | Arguments | Results | Example | > | :----------------------------------------------------------- | :------------ | :--------------------------------------------- | :------------------------------------- | > | [`count()`](https://docs.python.org/3/library/itertools.html#itertools.count) | start, [step] | start, start+step, start+2*step, … | `count(10) --> 10 11 12 1314 ...` | > | [`cycle()`](https://docs.python.org/3/library/itertools.html#itertools.cycle) | p | p0, p1, … plast, p0, p1, … | `cycle('ABCD') --> A B C D AB C D ...` | > | [`repeat()`](https://docs.python.org/3/library/itertools.html#itertools.repeat) | elem [,n] | elem, elem, elem, … endlessly or up to n times | `repeat(10, 3) --> 10 10 10` | ## functools ```python # functools — Higher-order functions and operations on callable objects import functools print(functools) print(functools.__doc__) print(dir(functools)) # partial 函数 (偏函数):绑定了一部分参数的函数。作用就是少传参数,更短,更简洁。 # wraps 函数:避免多个函数被两个装饰器装饰时就报错,因为两个函数名一样,第二个函数再去装饰的话就报错,最好是加上这个,代码更加健壮 def add(a, b): return a + b add3 = functools.partial(add, 3) add5 = functools.partial(add, 5) print(add3(4)) print(add5(10)) # wraps # 语法:functools.wraps ( wrapped [, assigned] [, updated] ) # # wraps() 简化了 update_wrapper() 函数的调用,即 wraps 函数 把 update_wrapper 也封装了进来 # # 它等价于 partial(update_wrapper, wrapped=wrapped, assigned, updated=updated) from functools import wraps def my_decorator(f): @wraps(f) def wrapper(*args, **kwargs): print("Calling decorated function") return f(*args, **kwargs) return wrapper @my_decorator def example(): """DocString""" print("Called example function") example() print(example.__name__) print(example.__doc__) ``` ## numpy > https://www.runoob.com/numpy/numpy-tutorial.html ```python import numpy as np a = np.arange(24) print(a.ndim) # a 现只有一个维度 # 现在调整其大小 b = a.reshape(2, 4, 3) # b 现在拥有三个维度 print(b.ndim) ``` ```python # 数组 import numpy as np # 默认为浮点数 x = np.ones(5) print(x) # 自定义类型 x = np.ones([2, 2], dtype=int) print(x) ``` ```python import numpy as np a = np.arange(9, dtype=np.float_).reshape(3, 3) print('第一个数组:') print(a) print('\n') print('第二个数组:') b = np.array([10, 10, 10]) print(b) print('\n') print('两个数组相加:') print(np.add(a, b)) print('\n') print('两个数组相减:') print(np.subtract(a, b)) print('\n') print('两个数组相乘:') print(np.multiply(a, b)) print('\n') print('两个数组相除:') print(np.divide(a, b)) ```
Comments | NOTHING