ich bin mir nicht sicher ob es auch besser geht. Jedenfalls sieht meine Lösung ziemlich umständlich aus. Ziel ist es eine Sequenz (in meinem Fall: Tuple in Tuple) solange zu rotieren bis ein Wertepaar, dass mit einem bestimmten Wert beginnt, an erster Stelle steht. Das Tuple mit den Wertepaaren könnte folgendermaßen aussehen:
Code: Alles auswählen
nodepairs = ((23, 14),(12, 13),(982,27893),(1233,37),(1,8123))
Code: Alles auswählen
np = ((982,27893),(1233,37),(1,8123),(23, 14),(12, 13))
Code: Alles auswählen
import scipy
def rot(seq, n=1):
"""rotates and returns the sequence seq
"""
c = len(seq)
if c == 0: return seq
n = n % c
return seq[n:] + seq[:n]
start_node = 982
start_pos = scipy.array(nodepairs).transpose().tolist()[0].index(start_node) + 1
np = rot(nodepairs, start_pos)
Grüßle, Calo