title | author | date |
---|---|---|
Create All Combinations of a List |
Damian Mingle |
05/04/2018 |
from itertools import combinations_with_replacement
# Create a list of math objects to combine
list_of_math_objects = ['calculus', 'geometry', 'logic']
# Create an object that is an empty list so it can hold our results
combinations = []
# Create a loop for every item in the length of list_of_math_objects
for i in list(range(len(list_of_math_objects))):
# Finds every combination (with replacement) for each object in the list
combinations.append(list(combinations_with_replacement(list_of_math_objects, i+1)))
# View the output
combinations
[[('calculus',), ('geometry',), ('logic',)],
[('calculus', 'calculus'),
('calculus', 'geometry'),
('calculus', 'logic'),
('geometry', 'geometry'),
('geometry', 'logic'),
('logic', 'logic')],
[('calculus', 'calculus', 'calculus'),
('calculus', 'calculus', 'geometry'),
('calculus', 'calculus', 'logic'),
('calculus', 'geometry', 'geometry'),
('calculus', 'geometry', 'logic'),
('calculus', 'logic', 'logic'),
('geometry', 'geometry', 'geometry'),
('geometry', 'geometry', 'logic'),
('geometry', 'logic', 'logic'),
('logic', 'logic', 'logic')]]
# Generae a flattent list of lists
combinations = [i for row in combinations for i in row]
# View the results
combinations
[('calculus',),
('geometry',),
('logic',),
('calculus', 'calculus'),
('calculus', 'geometry'),
('calculus', 'logic'),
('geometry', 'geometry'),
('geometry', 'logic'),
('logic', 'logic'),
('calculus', 'calculus', 'calculus'),
('calculus', 'calculus', 'geometry'),
('calculus', 'calculus', 'logic'),
('calculus', 'geometry', 'geometry'),
('calculus', 'geometry', 'logic'),
('calculus', 'logic', 'logic'),
('geometry', 'geometry', 'geometry'),
('geometry', 'geometry', 'logic'),
('geometry', 'logic', 'logic'),
('logic', 'logic', 'logic')]