2017-01-27 8 views
-1

Ich versuche, alle möglichen Kombinationen aus einer beliebigen Anzahl von Serien zu erhalten. Wie würde ich eine Schleife schreiben, um alle Kombinationen zu erhalten und sie in eine Excel-Datei zu drucken?Verwenden Sie Python, um alle Kombinationen anzuzeigen

Eingang

Series 1 A, B, C
Series 2 1,2,3
Series 3 X, Y, Z

Output

Combo 1 A, 1, x

Combo 2 A, 2, X

Combo 3 A, 3, X

ect ....

+0

Welche Serie? Seien Sie spezifisch und geben Sie einige Beispiele an. – saga

+0

Dies ist die nächste, die ich habe - aber es ist eine Excel-Formel. https://www.extendoffice.com/documents/excel/3097-excell-list-all-possible-combinations.html Ich versuche das in Python neu zu erstellen. – polonius11

+1

Mögliche Duplikate von [Holen Sie sich das kartesische Produkt einer Reihe von Listen?] (Http://stackoverflow.com/questions/533905/get-the-cartesian-product-of-a-series-of-lists) – hansaplast

Antwort

1

Run drei für Schleifen, eine in der anderen:

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

Verwenden itertools.product alle möglichen Kombinationen zu finden:

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

Was in eine Excel-Schreiben Datei, bitte see here.

+0

Die andere Antwort ist nicht falsch, aber diese Antwort ist besser. –

+0

Dokumentation: https://docs.python.org/2/library/itertools.html – nycynik

0

Bitte beachten Sie die Arbeitslösung unten mit 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) 
Verwandte Themen