How can i write this function Cprod (Cartesian Product) simply?
(writing this out: itertools.product([0, 1], repeat=N )
The value can be a list or a Tuple.
cprod([0, 1], 1) => ((0) (1))
cprod([0, 1], 2) => ((0,0) (0,1) (1,0) (1,1))
This works:
def cprod(x, c):
if c==1: return [[i] for i in x]
Sub= cprod(x, c-1)
return [i for F in x for i in [[F]+R for R in Sub]]
---------- Is there another way to write [F]+R ???
Other ways to improve it?
On 22/05/24 07:14, HenHanna via Python-list wrote:
How can i write this function Cprod (Cartesian Product) simply?
(writing this out: itertools.product([0, 1], repeat=N
)
The value can be a list or a Tuple.
cprod([0, 1], 1) => ((0) (1))
cprod([0, 1], 2) => ((0,0) (0,1) (1,0) (1,1))
This works:
def cprod(x, c):
if c==1: return [[i] for i in x]
Sub= cprod(x, c-1)
return [i for F in x for i in [[F]+R for R in Sub]]
---------- Is there another way to write [F]+R ???
Other ways to improve it?
https://python.readthedocs.io/en/stable/library/itertools.html#itertools.product
Regards, =dn
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 546 |
Nodes: | 16 (0 / 16) |
Uptime: | 168:07:47 |
Calls: | 10,385 |
Calls today: | 2 |
Files: | 14,057 |
Messages: | 6,416,545 |