Python Forum
Triplet Combinations of All Values - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Triplet Combinations of All Values (/thread-30767.html)



Triplet Combinations of All Values - quest - Nov-04-2020

Hello,
I am using a specific library

And I am running this line:
cirq.kron(cirq.unitary(cirq.rz(a)),cirq.unitary(cirq.rz(b)),cirq.unitary(cirq.rz(a)))
And I also have to write this code line with all possible triplet combinations of a and b
Like
        cirq.kron(cirq.unitary(cirq.rz(a)),cirq.unitary(cirq.rz(a)),cirq.unitary(cirq.rz(a)))
        cirq.kron(cirq.unitary(cirq.rz(a)),cirq.unitary(cirq.rz(a)),cirq.unitary(cirq.rz(b)))
        cirq.kron(cirq.unitary(cirq.rz(a)),cirq.unitary(cirq.rz(b)),cirq.unitary(cirq.rz(a)))
        cirq.kron(cirq.unitary(cirq.rz(a)),cirq.unitary(cirq.rz(b)),cirq.unitary(cirq.rz(b)))
        cirq.kron(cirq.unitary(cirq.rz(b)),cirq.unitary(cirq.rz(a)),cirq.unitary(cirq.rz(a)))
        cirq.kron(cirq.unitary(cirq.rz(b)),cirq.unitary(cirq.rz(b)),cirq.unitary(cirq.rz(a)))
        cirq.kron(cirq.unitary(cirq.rz(b)),cirq.unitary(cirq.rz(a)),cirq.unitary(cirq.rz(b)))
        cirq.kron(cirq.unitary(cirq.rz(a)),cirq.unitary(cirq.rz(b)),cirq.unitary(cirq.rz(a)))
        cirq.kron(cirq.unitary(cirq.rz(b)),cirq.unitary(cirq.rz(b)),cirq.unitary(cirq.rz(b)))
[/python]

How can I do that in the simplest way?


RE: Triplet Combinations of All Values - bowlofred - Nov-04-2020

Probably you could use itertools.product to generate them.

>>> from itertools import product
>>> list(product("ab", repeat=3))
[('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'b', 'a'), ('a', 'b', 'b'), ('b', 'a', 'a'), ('b', 'a', 'b'), ('b', 'b', 'a'), ('b', 'b', 'b')]
So something similar to:
for triplet in product((a, b), repeat=3):
    cirq.kron(cirq.unitary(cirq.rz(triplet[0])),cirq.unitary(cirq.rz(triplet[1])),cirq.unitary(cirq.rz(triplet[2])))



RE: Triplet Combinations of All Values - quest - Nov-05-2020

(Nov-04-2020, 11:38 PM)bowlofred Wrote: Probably you could use itertools.product to generate them.

>>> from itertools import product
>>> list(product("ab", repeat=3))
[('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'b', 'a'), ('a', 'b', 'b'), ('b', 'a', 'a'), ('b', 'a', 'b'), ('b', 'b', 'a'), ('b', 'b', 'b')]
So something similar to:
for triplet in product((a, b), repeat=3):
    cirq.kron(cirq.unitary(cirq.rz(triplet[0])),cirq.unitary(cirq.rz(triplet[1])),cirq.unitary(cirq.rz(triplet[2])))
Thank you very much :))