2017-08-08 2 views
0

Ich habe ein Skript, in dem ich versuche, HTML-Datei zu erstellen. In dieser HTML-Datei befinden sich 3 Zeilen, linke Reihe, rechte Reihe, mittlere Reihe. Jede dieser zu generierenden Zeilen benötigt zwei Argumente, eines ist Titel und anderes ist Beschreibung.Liste und zum Mischen

Als Beispiel betrachten wir in zwei Listen gespeichert, um eine linke Reihe und die rechte Reihe Elemente haben, ist ein für den Titel und eine andere für desc:

rightRowTitle = ['title2','title2'] 
rightRowDesc = ['Desc','Desc2'] 
leftRowTitle = ['l1','l2'] 
leftRowDesc = ['l1','l2'] 

Hier ist ein Beispiel dafür, was ich gemacht:

rightRowTitle = ['Tytul','Tytul2'] 
rightRowDesc = ['Desc','Desc2'] 

leftRowTitle = ['l1','l2'] 
leftRowDesc = ['l1','l2'] 


for title, desc in zip(rightRowTitle, rightRowDesc): 
    print(title,' - ', desc) 
for title, desc in zip(leftRowTitle, leftRowDesc): 
    print(title,' + ', desc) 

das Ergebnis:

Tytul - Desc 
Tytul2 - Desc2 
l1 + l1 
l2 + l2 

Nun, wenn ich Funktionen verwenden, um Zeilen zu erzeugen, würde ich mag eine solche haben n Ergebnis:

rightRowTitle 
rightRowDesc 
leftRowTitle 
leftRowDesc 
rightRowTitle2 
rightRowDesc2 

Ich würde es lieben wie jetzt zwischen nicht als statisch zu mischen.

+0

Also wollen Sie eine Funktion, um alle möglichen Combos nach dem Zufallsprinzip oder nur alle Combos der RightRow 1 & 2 Listen zu machen? – Tony

+0

@Tony Ich möchte es Funktion a und Funktion b mischen, aber Funktion a nimmt andere Parameter als Funktion b (aus verschiedenen Listen) –

+0

FYI: Zeilen sind horizontal, Spalten sind vertikal. Auf polnisch (ich nehme an, dass wegen Ihres Namens und "Tytul" in Frage) "Reihe" ist "wiersz" und "Spalte" ist "kolumna". Nicht versuchen, eine Grammatik Nazi oder Smth zu sein, nur wollen Sie es einfacher für Sie eine Frage zu stellen, die richtig verstanden wird. –

Antwort

0

Sie können usa zip zweimal.

rightRowTitle = ['Tytul','Tytul2'] 
rightRowDesc = ['Desc','Desc2'] 
leftRowTitle = ['l1','l2'] 
leftRowDesc = ['l1','l2'] 

[print(a) for a in zip(zip(rightRowTitle, rightRowDesc), zip(leftRowTitle, leftRowDesc))] 

Und Sie erhalten:

(('Tytul', 'Desc'), ('l1', 'l1')) 
(('Tytul2', 'Desc2'), ('l2', 'l2')) 
[None, None] 

Schauen ein größeres Beispiel:

rightRowTitle = ['Title1Right','Title2Right', 'Title3Right', 'Title4Right', 'Title5Right'] 
rightRowDesc = ['Desc1Right','Desc2Right', 'Desc3Right', 'Desc4Right', 'Desc5Right'] 
leftRowTitle = ['Title1Left','Title2Left', 'Title3Left', 'Title4Left', 'Title5Left'] 
leftRowDesc = ['Desc1Left','Desc2Left', 'Desc3Left', 'Desc4Left', 'Desc5Left'] 

[print(a) for a in zip(zip(rightRowTitle, rightRowDesc), zip(leftRowTitle, leftRowDesc))] 

Und Sie erhalten:

(('Title1Right', 'Desc1Right'), ('Title1Left', 'Desc1Left')) 
(('Title2Right', 'Desc2Right'), ('Title2Left', 'Desc2Left')) 
(('Title3Right', 'Desc3Right'), ('Title3Left', 'Desc3Left')) 
(('Title4Right', 'Desc4Right'), ('Title4Left', 'Desc4Left')) 
(('Title5Right', 'Desc5Right'), ('Title5Left', 'Desc5Left')) 
[None, None, None, None, None] 

Jetzt nur durch laufen müssen Das Ergebnis, um zu bekommen, wonach Sie suchen! So rufen Sie Ihre Funktion können Sie etwas tun:

def myFun(title, description): 
    print("Title: " + title + ". Desc: " + description) 

def myFun2(title, description): 
    print("TITLE: " + title + ". DESC: " + description) 

pairs = [a for a in zip(zip(rightRowTitle, rightRowDesc), zip(leftRowTitle, leftRowDesc))] 
pairs2 = [pair for pair in pairs] 

for p in pairs2: 
    myFun(p[0][0], p[0][1]) 
    myFun2(p[1][0], p[1][1]) 

Und Sie werden so etwas wie dieses:

Title: Title1Right. Desc: Desc1Right 
TITLE: Title1Left. DESC: Desc1Left 
Title: Title2Right. Desc: Desc2Right 
TITLE: Title2Left. DESC: Desc2Left 
Title: Title3Right. Desc: Desc3Right 
TITLE: Title3Left. DESC: Desc3Left 
Title: Title4Right. Desc: Desc4Right 
TITLE: Title4Left. DESC: Desc4Left 
Title: Title5Right. Desc: Desc5Right 
TITLE: Title5Left. DESC: Desc5Left 

Sie haben nur myFun und myFun2 mit Ihrer Funktion zu ändern.

+0

Lassen Sie mich versuchen und informieren Sie! @nestor –

+0

Es ist schön, aber ich habe immer noch 2 Funktionen, die ich irgendwie verwenden muss, dies ist dies eher nicht möglich? Ich brauche zu verwenden left_row (Titel, ab) und right_row (Titel, ab) irgendwie. Irgendeine Idee wie? –

+0

Die Sache ist, ich habe 2 Funktionen, die 2 verschiedene Listen aufnehmen sollten. left_row für left_row Liste und right_row für right_row Liste, jede Chance, dass Sie es für zwei verschiedene Funktionen ändern oder vielleicht sogar 3 (Cuz auch center_row) –

0

Vielleicht können Sie alle Titel in einem list und alle Beschreibungen in einem anderen list speichern. Mischen Sie sie und machen Sie Paare nacheinander.

from random import shuffle 

titles = ['Tytul','Tytul2', 'l1','l2'] 
descriptions = ['Desc','Desc2', 'l1','l2'] 
shuffle(titles) 
shuffle(descriptions) 
for t, d in zip(titles, descriptions): 
    print(title + ' - ' + desc) 

Sorry, wenn dies ist nicht das, was Sie suchen, aber das ist, was ich von verstehe Ihre Frage.

Sie werden so etwas wie dieses:

// shuffled lists 
titles = ['l2', 'Tytul2','Tytul', 'l1'] 
descriptions = ['Desc', 'l2','l1', 'Desc2'] 

// After the print 
l2 - Desc 
Tytul2 - l2 
Tytul - l1 
l1 - Desc2 

@nestor

hier ein Zustand ist, ich habe:

if len(rightRowTitle) > len(leftRowTitle): 
    for title, desc in zip(rightRowTitle, rightRowDesc): 
     right_row(title, desc) 
    for title, desc in zip(leftRowTitle, leftRowDesc): 
     left_row(title, desc) 

Problem ist, wird dies nicht mischen, wird es nur basicaly Zeige mir die erste linke Reihe und dann die rechte Reihe. Ich möchte das zwischen mischen.

+0

Jede Funktion benötigt 2 Parameter, Funktionen müssen gemischt werden, wenn Sie wissen, was ich meine? –

+0

@DamianBusz Ich verstehe dich nicht ... Können Sie uns ein Beispiel geben, wonach Sie suchen? –

+0

Ill bearbeiten mein Hauptpost –