MCPcopy Create free account
hub / github.com/Singular/Singular / xcombine

Function xcombine

Singular/dyn_modules/python/cart.py:2–18  ·  view source on GitHub ↗

returns a generator which returns combinations of argument sequences for example xcombine((1,2),(3,4)) returns a generator; calling the next() method on the generator will return [1,3], [1,4], [2,3], [2,4] and StopIteration exception. This will not create the whole list of combinations in memory at

(*seqin)

Source from the content-addressed store, hash-verified

1import itertools
2def xcombine(*seqin):
3 '''returns a generator which returns combinations of argument sequences
4for example xcombine((1,2),(3,4)) returns a generator; calling the next()
5method on the generator will return [1,3], [1,4], [2,3], [2,4] and
6StopIteration exception. This will not create the whole list of
7combinations in memory at once.'''
8 def rloop(seqin,comb):
9 '''recursive looping function'''
10 if seqin: # any more sequences to process?
11 for item in seqin[0]:
12 newcomb=comb+[item] # add next item to current combination
13 # call rloop w/ remaining seqs, newcomb
14 for item in rloop(seqin[1:],newcomb):
15 yield item # seqs and newcomb
16 else: # processing last sequence
17 yield comb # comb finished, add to list
18 return rloop(seqin,[])
19
20def cartn(sequence, n):
21 tocombine=list(itertools.repeat(sequence,n))

Callers 1

cartnFunction · 0.85

Calls 1

rloopFunction · 0.85

Tested by

no test coverage detected