Considerare una stringa '1234'
. È necessaria una funzione che genera tutte le rotazioni: '1234', '3412', '4123', '2341'
. Ho creato una semplice suite di test:Modo Pythonic per generare rotazioni di stringhe
assert rotations('123') == set(['123', '231', '312'])
assert rotations('111') == set(['111'])
assert rotations('197') == set(['197', '971', '719'])
Qual è il modo pitone per farlo? Ho finito con codice sotto
def rotations(num):
str_num = str(num)
result = set()
for mid in xrange(len(str_num)):
result.add(
str_num[mid:] + str_num[:mid]
)
return result
Se questo è ** codice di lavoro ** che si ritiene possa essere migliorato, consultare [codereview.se]. – jonrsharpe
forse un insieme di comprensione? '{s [mid:] + s [: mid] per il medio di gamma (len (s))}' –
Quello che hai è abbastanza pitone - anche se il commento di @ NiklasB., che forse merita di essere una risposta accettata , probabilmente lo è di più (sebbene sostituisca 'range' di' xrange' in Python 2) –