2016-11-27 2 views
1

Aus einer Liste von 8 möglichen Buchstaben möchte ich eine zufällige Sequenz erzeugen, in der jedes Element um mindestens sechs von einem identischen Element getrennt ist verschiedene Elemente.Wie man eine Sequenz erzeugt, in der jedes Element durch mindestens sechs verschiedene Elemente von einem identischen Element getrennt wird

sequence_list = [] 
target_list = ["a","b","c","d","e","f","g","h"] 

for i in range(1,41): 
    sequence_list.append(random.choice(target_list)) 
print sequence_list 

Zum Beispiel, wenn der erste Buchstabe in sequence_list ein a ist, sollte es nicht für mindestens die nächsten sechs Elemente in der Liste wiederholt werden. Gleiches gilt für jeden anderen Gegenstand. Schätzen Sie Ihre Hilfe.

Antwort

0

ist dies wahrscheinlich nicht der effizienteste Weg, es zu tun, aber man kann es wie folgt tun:

>>> target_list = list(string.ascii_letters[:8]) 
>>> target_list 
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] 
>>> sequence_list = [] 
>>> for i in range(1,41): 
...  el_list = [x for x in target_list if x not in sequence_list[-6:]] 
...  sequence_list.append(random.choice(el_list)) 
... 
>>> 
>>> sequence_list 
['e', 'h', 'g', 'a', 'c', 'f', 'd', 'b', 'e', 'h', 'g', 'c', 'f', 'd', 'a', 'e', 'b', 'g', 'c', 'f', 'h', 'a', 'e', 'b', 'g', 'd', 'f', 'c', 'h', 'a', 'b', 'g', 'd', 'f', 'e', 'c', 'a', 'b', 'h', 'd'] 
+0

welche Ausgabe bekommen Sie? Ich bekomme jetzt eine Liste von 2 Gegenständen, wie '['b', 'c']'. Auch nicht sicher, was dein Code genau macht – HansDieter88

+0

funktioniert jetzt. Vielen Dank. – HansDieter88

Verwandte Themen