itertools模块知识与整理删减【Python】
来源:互联网 发布:医学生必备软件 编辑:程序博客网 时间:2024/05/02 06:45
参考链接没记下,就这么着吧。参考了几篇博文,自己再来个总结。新手可以对着学学map,reduce,zip
count(p,q) 返回p, p+q, p+2*q, ....
cycle(p) 返回 p[0], p[1],...p[last],p[0],p[1]......
repeat(p, n) 返回 p...p (n times)
chain(p,q..) 把几个参数连接起来(通通单字符化)
compress(data, selectors) compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F
dropwhile(pred, seq) dropwhile(lambda x: x<5, [1,4,6,4,1]) --> 6 4 1
takewhile(pred, seq) takewhile(lambda x: x<5, [1,4,6,4,1]) --> 1 4
- .....: for n, v in itertools.groupby('aaabbbb ccc aaaaa'):
- .....: print n, list(v)
- .....:
- a ['a', 'a', 'a']
- b ['b', 'b', 'b', 'b']
- [' ']
- c ['c', 'c', 'c']
- [' ']
- a ['a', 'a', 'a', 'a', 'a']
ifilterfalse(pred, seq) ifilterfalse(lambda x: x%2, range(10)) --> 0 2 4 6 8
islice(seq, start, stop, step) islice('ABCDEFG', 2, None) --> C D E F G
imap(fun, p, q) imap(pow, (2,3,10), (5,2,3)) --> 32 9 1000
izip(p,q,...) izip('ABCD', 'xy') -->( 'A', 'x' ), ( 'B', 'y' )
izip_longest(p,q,...) izip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D-
starmap(fun, seq) starmap(pow, [(2,5), (3,2), (10,3)]) --> 32 9 1000
tee(it, n) 将迭代器it复制n份
product(p,q,...) 笛卡尔积
permutations(seq, r) permutations('ABCD', 2) -->AB AC AD BA BC BD CA CB CD DA DB DC
combination(seq, r) combinations('ABCD', 2) -->AB AC AD BC BD CD
combinations_with_replacement(seq, r) combinations_with_replacement('ABCD', 2) -->AA AB AC AD BB BC BD CC CD DD
groupby
原型:
groupby(iterable[, keyfunc])
返回:按照keyfunc函数对序列每个元素执行后的结果分组(每个分组是一个迭代器), 返回这些分组的迭代器
例子:
from itertools import *a = ['aa', 'ab', 'abc', 'bcd', 'abcde']for i, k in groupby(a, len):#按照字符串的长度对a的每个元素进行分组 for m in k: print m, print i
输出:
aa ab 2abc bcd 3abcde 5
starmap
原型:
starmap(func, seq)
返回:对序列seq的每个元素作为func的参数列表执行, 返回执行结果的迭代器
例子:
from itertools import *for i in starmap(pow, [(2,2), (3, 2)]):#4, 9 print i
product
原型:
product(iter1, iter2, ... iterN, [repeat=1])
创建一个迭代器,生成表示item1,item2等中的项目的笛卡尔积的元组,repeat是一个关键字参数,指定重复生成序列的次数
from itertools import *for i in product([1, 2, 3], [4, 5], [6, 7]): print i
输出:
(1, 4, 6)(1, 4, 7)(1, 5, 6)(1, 5, 7)(2, 4, 6)(2, 4, 7)(2, 5, 6)(2, 5, 7)(3, 4, 6)(3, 4, 7)(3, 5, 6)(3, 5, 7)
def take(n, iterable): "Return first n items of the iterable as a list" return list(islice(iterable, n))def tabulate(function, start=0): "Return function(0), function(1), ..." return imap(function, count(start))def consume(iterator, n): "Advance the iterator n-steps ahead. If n is none, consume entirely." # Use functions that consume iterators at C speed. if n is None: # feed the entire iterator into a zero-length deque collections.deque(iterator, maxlen=0) else: # advance to the empty slice starting at position n next(islice(iterator, n, n), None)def nth(iterable, n, default=None): "Returns the nth item or a default value" return next(islice(iterable, n, None), default)def quantify(iterable, pred=bool): "Count how many times the predicate is true" return sum(imap(pred, iterable))def padnone(iterable): """Returns the sequence elements and then returns None indefinitely. Useful for emulating the behavior of the built-in map() function. """ return chain(iterable, repeat(None))def ncycles(iterable, n): "Returns the sequence elements n times" return chain.from_iterable(repeat(tuple(iterable), n))def dotproduct(vec1, vec2): return sum(imap(operator.mul, vec1, vec2))def flatten(listOfLists): "Flatten one level of nesting" return chain.from_iterable(listOfLists)def repeatfunc(func, times=None, *args): """Repeat calls to func with specified arguments. Example: repeatfunc(random.random) """ if times is None: return starmap(func, repeat(args)) return starmap(func, repeat(args, times))def pairwise(iterable): "s -> (s0,s1), (s1,s2), (s2, s3), ..." a, b = tee(iterable) next(b, None) return izip(a, b)def grouper(iterable, n, fillvalue=None): "Collect data into fixed-length chunks or blocks" # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx args = [iter(iterable)] * n return izip_longest(fillvalue=fillvalue, *args)def roundrobin(*iterables): "roundrobin('ABC', 'D', 'EF') --> A D E B F C" # Recipe credited to George Sakkis pending = len(iterables) nexts = cycle(iter(it).next for it in iterables) while pending: try: for next in nexts: yield next() except StopIteration: pending -= 1 nexts = cycle(islice(nexts, pending))def powerset(iterable): "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))def unique_everseen(iterable, key=None): "List unique elements, preserving order. Remember all elements ever seen." # unique_everseen('AAAABBBCCDAABBB') --> A B C D # unique_everseen('ABBCcAD', str.lower) --> A B C D seen = set() seen_add = seen.add if key is None: for element in ifilterfalse(seen.__contains__, iterable): seen_add(element) yield element else: for element in iterable: k = key(element) if k not in seen: seen_add(k) yield elementdef unique_justseen(iterable, key=None): "List unique elements, preserving order. Remember only the element just seen." # unique_justseen('AAAABBBCCDAABBB') --> A B C D A B # unique_justseen('ABBCcAD', str.lower) --> A B C A D return imap(next, imap(itemgetter(1), groupby(iterable, key)))def iter_except(func, exception, first=None): """ Call a function repeatedly until an exception is raised. Converts a call-until-exception interface to an iterator interface. Like __builtin__.iter(func, sentinel) but uses an exception instead of a sentinel to end the loop. Examples: bsddbiter = iter_except(db.next, bsddb.error, db.first) heapiter = iter_except(functools.partial(heappop, h), IndexError) dictiter = iter_except(d.popitem, KeyError) dequeiter = iter_except(d.popleft, IndexError) queueiter = iter_except(q.get_nowait, Queue.Empty) setiter = iter_except(s.pop, KeyError) """ try: if first is not None: yield first() while 1: yield func() except exception: passdef random_product(*args, **kwds): "Random selection from itertools.product(*args, **kwds)" pools = map(tuple, args) * kwds.get('repeat', 1) return tuple(random.choice(pool) for pool in pools)def random_permutation(iterable, r=None): "Random selection from itertools.permutations(iterable, r)" pool = tuple(iterable) r = len(pool) if r is None else r return tuple(random.sample(pool, r))def random_combination(iterable, r): "Random selection from itertools.combinations(iterable, r)" pool = tuple(iterable) n = len(pool) indices = sorted(random.sample(xrange(n), r)) return tuple(pool[i] for i in indices)def random_combination_with_replacement(iterable, r): "Random selection from itertools.combinations_with_replacement(iterable, r)" pool = tuple(iterable) n = len(pool) indices = sorted(random.randrange(n) for i in xrange(r)) return tuple(pool[i] for i in indices)def tee_lookahead(t, i): """Inspect the i-th upcomping value from a tee object while leaving the tee object at its current position. Raise an IndexError if the underlying iterator doesn't have enough values. """ for value in islice(t.__copy__(), i, None): return value raise IndexError(i)
- itertools模块知识与整理删减【Python】
- python itertools模块学习
- python itertools模块
- python itertools模块学习
- [Python]itertools模块
- Python:itertools模块
- Python:itertools模块
- Python itertools模块
- Python:itertools模块
- Python:itertools模块
- python itertools模块
- Python 之itertools模块
- python itertools模块
- python练习-itertools模块
- Python itertools模块详解
- python模块之itertools
- Python itertools模块详解
- python itertools模块指南
- 读取IMSI的apk
- Nginx+Tomcat负载均衡配置
- 启动另外的一个应用程序的Activity(三种方式)
- kAri448. 游戏-点乘的运用
- poj1111
- itertools模块知识与整理删减【Python】
- Android的SDK与ADT不匹配问题
- 分布式系统 并不是我想象中的那样!
- [水]ZOJ1067
- URLVariables 实现在应用程序和服务器之间传输变量
- Note-序列化时readObjectNoData的使用
- Windows防火墙导致FTP服务器不能访问的解决方法
- java/lang/NoClassDefFoundError: java/lang/Object
- map,zip,reduce用法简略笔记【Python】