Search code examples
pythonpython-itertools

Cartesian Product Combine 3 List into 1 List of String


I'm trying to combine 3 list into 1 using itertools.

List1 = A, B,C
List2 = L1,L2,L3,L4,L5,L6,L7
List3 = L1,L2,L3,L4,L5,L6,L7

Expected output = AL1L1,AL1L2,AL1L3,.....

import itertools
def cartesian_product(lists):
    return list(itertools.product(*lists))
ls = [['A', 'B','C'],['L1','L2','L3','L4','L5','L6','L7'],['L1','L2','L3','L4','L5','L6','L7']]
print("Cartesian Product List:",cartesian_product(ls))

The output shows:

Cartesian Product List: [('A', 'L1', 'L1'), ('A', 'L1', 'L2'),

Solution

  • I think you just need to s.join it:

    import itertools
    def cartesian_product(lists):
         return list(itertools.product(*lists))
    ls = [['A', 'B','C'],['L1','L2','L3','L4','L5','L6','L7'], 
    ['L1','L2','L3','L4','L5','L6','L7']]
    prod_lst = cartesian_product(ls)
    s = ""
    for i in range(len(prod_lst)):
        prod_lst[i] = s.join(prod_lst[i])
    print("Cartesian Product List:",prod_lst)