If you want all the possible combinations, you can use the Cartesian product of both lists using itertools.product
:
>>> import itertools
>>> lista1 = ["R1", "R2", "R3", "R4", "R5", "R6"]
>>> lista2 = ["Frase 1", "Frase 2", "Frase 3", "Frase 4", "Frase 5", "Frase 6"]
>>> combinaciones = list(itertools.product(lista1, lista2))
>>> len(combinaciones)
36
>>> combinaciones
[('R1', 'Frase 1'),
('R1', 'Frase 2'),
('R1', 'Frase 3'),
('R1', 'Frase 4'),
('R1', 'Frase 5'),
('R1', 'Frase 6'),
('R2', 'Frase 1'),
('R2', 'Frase 2'),
('R2', 'Frase 3'),
('R2', 'Frase 4'),
('R2', 'Frase 5'),
('R2', 'Frase 6'),
('R3', 'Frase 1'),
('R3', 'Frase 2'),
('R3', 'Frase 3'),
('R3', 'Frase 4'),
('R3', 'Frase 5'),
('R3', 'Frase 6'),
('R4', 'Frase 1'),
('R4', 'Frase 2'),
('R4', 'Frase 3'),
('R4', 'Frase 4'),
('R4', 'Frase 5'),
('R4', 'Frase 6'),
('R5', 'Frase 1'),
('R5', 'Frase 2'),
('R5', 'Frase 3'),
('R5', 'Frase 4'),
('R5', 'Frase 5'),
('R5', 'Frase 6'),
('R6', 'Frase 1'),
('R6', 'Frase 2'),
('R6', 'Frase 3'),
('R6', 'Frase 4'),
('R6', 'Frase 5'),
('R6', 'Frase 6')]
If you want to choose a combination at random you can use random.choice
:
>>> import random
>>> random.choice(combinaciones)
('R2', 'Frase 6')
>>> random.choice(combinaciones)
('R6', 'Frase 4')
>>> random.choice(combinaciones)
('R4', 'Frase 2')
Update
It is true that when using random.choice
it is possible that at some point one will repeat. In that case, a solution may be to apply a random.shuffle
and go consume the elements from the beginning to the end:
>>> random.shuffle(combinaciones)
>>> combinaciones
[('R6', 'Frase 4'),
('R4', 'Frase 3'),
('R3', 'Frase 6'),
('R5', 'Frase 2'),
('R2', 'Frase 1'),
('R4', 'Frase 5'),
('R5', 'Frase 5'),
('R4', 'Frase 4'),
('R1', 'Frase 2'),
('R1', 'Frase 3'),
('R6', 'Frase 2'),
('R3', 'Frase 2'),
('R5', 'Frase 3'),
('R6', 'Frase 5'),
('R6', 'Frase 1'),
('R3', 'Frase 4'),
('R5', 'Frase 6'),
('R2', 'Frase 3'),
('R2', 'Frase 4'),
('R4', 'Frase 6'),
('R2', 'Frase 5'),
('R1', 'Frase 4'),
('R3', 'Frase 3'),
('R4', 'Frase 2'),
('R4', 'Frase 1'),
('R1', 'Frase 1'),
('R1', 'Frase 5'),
('R3', 'Frase 1'),
('R6', 'Frase 6'),
('R2', 'Frase 6'),
('R1', 'Frase 6'),
('R6', 'Frase 3'),
('R2', 'Frase 2'),
('R5', 'Frase 1'),
('R5', 'Frase 4'),
('R3', 'Frase 5')]
The variable combinaciones
is a list of tuples , to access Rx and FraseX you only have to access the position 0
and 1
of each tuple. Considering the "shuffleada" list above:
>>> rx = combinaciones[0][0]
>>> rx
'R6'
>>> frase = combinaciones[0][1]
>>> frase
'Frase 4'
Or downloading the content directly in two variables:
>>> rx, frase = combinaciones[0]
>>> rx
'R6'
>>> frase
'Frase 4'