Discussion:
Cprod -- (writing this: itertools.product([0, 1], repeat=N )
(too old to reply)
HenHanna
2024-05-21 19:14:03 UTC
Permalink
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?
dn
2024-05-21 22:44:44 UTC
Permalink
Post by HenHanna
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))
        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
HenHanna
2024-05-22 05:21:53 UTC
Permalink
Post by dn
Post by HenHanna
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))
        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
Thank you... That code looks elegant... I'll study it.

Loading...