2016-12-22 5 views
0

Im Einzelnen ab: Ich habe eine Liste Wochentag haben:Bestellliste Anzahl von bestimmten Anzahl

list_week_day = [0,2,4,5,6] 

wenn today.weekday() = 3, dann bestellen list_week_day = [4,5,6, 0,2]

Also, wie geht das ???

+1

Enthält diese nur dieses spezielle Problem zu lösen haben oder Verwenden Sie diesen Algorithmus erneut? –

Antwort

2

Haben Sie Folgendes versucht? Ich vermute, es ist nicht der effizienteste Weg, um das zu bekommen, was man sich wünscht, aber es ist sicherlich eine Möglichkeit, es zu bekommen.

list_week_day[today.weekday() : ] + list_week_day[ : today.weekday()] 
6
new = old[n:] + old[:n] 

Sie hängen Sie den vorderen Teil der Liste mit dem Rückenteil. Können Sie nach diesem Hinweis fertig werden? n ist Ihr Wochentag.

1

Wie vorgeschlagen here, können Sie numpy rollen Befehl, einen geeigneten Wert der Auswahl von rollen:

>>> import numpy 
>>> a=numpy.arange(1,10) #Generate some data 
>>> numpy.roll(a,1) 
array([9, 1, 2, 3, 4, 5, 6, 7, 8]) 
>>> numpy.roll(a,-1) 
array([2, 3, 4, 5, 6, 7, 8, 9, 1]) 
>>> numpy.roll(a,5) 
array([5, 6, 7, 8, 9, 1, 2, 3, 4]) 
>>> numpy.roll(a,9) 
array([1, 2, 3, 4, 5, 6, 7, 8, 9]) 
+2

numpy ist eine ziemlich starke Abhängigkeit für etwas, das mit Vanillelisten gemacht werden kann ... – nrlakin

+0

@nrlakin: Es ist ein guter Punkt. Obwohl ich denke, dass die Klarheit der Syntax ein definitives Plus ist, es lohnt sich, darüber nachzudenken, ob Sie sowieso numpy verwenden werden. – Richard

+1

Ja, ich denke, das ist der Schlüssel. Wenn es auf einem Computer mit einer vorhandenen numpy Installation läuft, ist es eine nette Lösung. – nrlakin

2

könnte auch versuchen:

wday = 3 
[(x + wday) % 7 for x in list_week_day] 

# [3, 4, 5, 6, 0, 1, 2] 
Verwandte Themen