2017-01-27 2 views
-1

Я пытаюсь получить все возможные комбинации любого числа серий. Как написать цикл, чтобы получить все комбинации и напечатать их в файле excel?Использование Python для отображения всех комбинаций

Входной

Серия 1 А, В, С
Серия 2 1,2,3
Серия 3 X, Y, Z,

Выход

Combo 1 А, 1, х

Combo 2 А, 2, Х

Combo 3 А, 3, Х

т.д ....

+0

Какая серия? Будьте конкретны и дайте несколько примеров. – saga

+0

Это ближайший я получил - однако это формула excel. https://www.extendoffice.com/documents/excel/3097-excel-list-all-possible-combinations.html Я пытаюсь воссоздать это в python. – polonius11

+1

Возможный дубликат [Получить декартовой продукт из серии списков?] (Http://stackoverflow.com/questions/533905/get-the-cartesian-product-of-a-series-of-lists) – hansaplast

ответ

1

Выполнить три для петли, один внутри другого:

for a in s1: 
    for b in s2: 
     for c in s3: 
      # do stuff. a, b, c is the combination 
2

Используйте itertools.product, чтобы найти все возможные комбинации:

s1 = ['A', 'B', 'C'] 
s2 = [1,2,3] 
s3 = ['X', 'Y', 'Z'] 
from itertools import combinations 
combos = itertools.product(s1,s2,s3) 

Что касается написания в Excel файл, пожалуйста see here.

+0

Другой ответ не так, но этот ответ лучше. –

+0

Документация: https://docs.python.org/2/library/itertools.html – nycynik

0

См. Рабочий раствор ниже, используя xlwings.

import xlwings as xw 

wb = xw.Book(r'C:\somepath') 
sht = wb.sheets('Fields') 
s1 = sht.range('A1:A10') 
s2 = sht.range('B1:B12') 

for a in s1: 
    for b in s2: 
     print (a.value + "," + b.value) 
Смежные вопросы