-2

does anybody know how can I find out all the possible combinations of a given list using Python 3?

My lists look like this:

usersArray = ["John", "Mike", "Robert", "Tom"]
foodsArray = ["hamburger", "cake", "cheese"]

I would like to have something like this:

Johnhamburger
Mikehamburger
Roberthamburger
Tomhamburger

Johncake
Mikecake
Robertcake
Tomcake

Johncheese
Mikecheese
Robertcheese
Tomcheese

#and then the opposite

hamburgerJohn
hamburgerMike
hamburgerRobert
hamburgerTom

cakeJohn
...
...
...

cheeseJohn
...
...
...

Can I use itertools? Thank you!

Irmen de Jong
  • 2,739
  • 1
  • 14
  • 26
John Mike
  • 9
  • 1

2 Answers2

2

That's just two uses of itertools product:

for food, user in itertools.product(foodsArray, usersArray):
    print(user+food)

for food, user in itertools.product(foodsArray, usersArray):
    print(food+user)
Sebastian Mendez
  • 2,859
  • 14
  • 25
1

A pure Python solution:

You can do this with nested for-loops in a list-comprehension and string concatenation:

[u + f for u in usersArray for f in foodsArray]

which gives:

['Johnhamburger', 'Johncake', 'Johncheese', 'Mikehamburger', 'Mikecake', 'Mikecheese', 'Roberthamburger', 'Robertcake', 'Robertcheese', 'Tomhamburger', 'Tomcake', 'Tomcheese']

[f + u for u in usersArray for f in foodsArray]

which gives:

['hamburgerJohn', 'cakeJohn', 'cheeseJohn', 'hamburgerMike', 'cakeMike', 'cheeseMike', 'hamburgerRobert', 'cakeRobert', 'cheeseRobert', 'hamburgerTom', 'cakeTom', 'cheeseTom']
Joe Iddon
  • 20,101
  • 7
  • 33
  • 54