2017-08-15 2 views
-2

Ich suche eine Liste der Elemente a1, ... a6, ... e1, ..., e6Schlurfen eine Liste während Reihenfolge relativ zu Elementen halten

unter Beibehaltung zwei Regeln mischen:

wenn ich Schleife obwohl die Liste aus und filtert einen bestimmten Buchstaben oder eine Zahl aus sollte es in Ordnung sein:

a1, a2, a3 ... oder a1, b1, c1 ...

Wie kann ich die Liste unter Einhaltung dieser Regeln mischen? Gibt es eine Python-Bibliothek? für eine solche Aufgabe?

Hier ist ein Beispiel für ein Shuffle, die die Kriterien passen würden:

a1, b1, a2, b2, c1, a3, d1, c2, d2, e1, a4, b3, c3, d3, b4, d4, c4, a5, e2, d5, e3, c5, a6, b5, e4, a7, b6, c6, b7, d6, e5, e6, c7, d7, e7

for each in shuffled: 
    if each[1]=='1': 
     print(each) 

ergibt: a1, b1, c1, d1, e1.

Das Problem ist nicht sie zu sortieren, es erzeugt die zufällige Liste an erster Stelle.

+0

Haben Sie den letzten Auftrag wünschen zufällig generiert werden (aber die beiden Regeln gehorchen)? Außerdem ist nicht klar, in welcher Reihenfolge die Daten in "... b4, d4, c4 ..." sortiert werden sollen. – digitaLink

+0

Ja, es sollte eine zufällige Liste sein, die, wenn iteriert und gefiltert wird, sie die gefilterten Elemente relativ zueinander geordnet sind. Zum Beispiel, wenn I iterieren allerdings mit für jeden in gemischt: wenn jedes [1] == '1': print (each) I erhalte dann a1, b1, c1, d1, e1 .... not b1, a1 oder so ähnlich. –

Antwort

0

Nicht sicher, ob Bibliotheken dies tun. Es gibt eine einfache Lösung:

Zuerst spaltete die Liste von Unterlisten, in denen Elemente sind in der Reihenfolge:

x = [['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7'], 
['b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7'], 
['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7'], 
['d1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7'], 
['e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7']] 

dann das erste Element einer zufällig ausgewählten Unterliste Pop.

from random import shuffle 
select = list(range(5))*7 
shuffle(select) 
[x[idx].pop(0) for idx in select] 

Das Ergebnis ist (auf dem Shuffle-Ergebnis hängt):

['a1', 'b1', 'c1', 'e1', 'c2', 'e2', 'd1', 'a2', 'a3', 'b2', 'c3', 'c4', 'c5', 'c6', 'd2', 'e3', 'b3', 'a4', 'b4', 'a5', 'd3', 'a6', 'e4', 'd4', 'e5', 'd5', 'a7', 'e6', 'd6', 'b5', 'e7', 'b6', 'd7', 'c7', 'b7'] 
Verwandte Themen