O que há de elegante nisso? Você gasta tempo revertendo uma lista em vez de gerá-la da maneira que deseja.
alexis
5
@alexis não custa nada. Você obtém reversed(range)de graça por causa da ótima range_reverseotimização integrada ao CPython. Fiz alguns benchmarks rápidos e não consegui encontrar uma diferença significativa de custo entre step=-1e reversed()no Python 2.7 e 3.3. Observe também que este idioma é usado em heapq .
kojiro
Obrigado, @kojiro, isso é interessante. Mas, a menos que você o tenha usado xrangeem seus testes do Python 2.7, reverseestará operando em uma lista comum já gerada, não em um objeto de intervalo; então você está dizendo que qualquer lista pode ser revertida com eficiência, ou apenas range/xrangeobjetos? (o código heapq ao qual você vincula envolve um objeto de intervalo do Python 3).
alexis
@alexis Eu não teria a ousadia de sugerir que qualquer lista pode ser revertida com eficiência - essa é uma afirmação muito desqualificada para eu responder de qualquer maneira. É revelador, porém, que o código heapify mudou de step=-1para reversed()entre Python 2.3 e 2.4
0 é o valor condicional quando esta condição é verdadeira, o loop continuará em execução. 10 é o valor inicial. 1 é o modificador onde pode ser um decremento simples.
for number in reversed(range(0,10,1)):print number;
Atrasado para a festa, mas para qualquer pessoa encarregada de criar seus próprios ou quiser ver como isso funcionaria, aqui está a função com um bônus adicional de reorganizar os valores start-stop com base no incremento desejado:
for i in reversed(mat):
embora possa ser mais lentoRespostas:
fonte
range(5,-1,-1)
. Embora ele provavelmente pudesse descobrir isso por tentativa e erro.Já é muito tarde, mas eu só queria acrescentar que há uma maneira mais elegante: usando
reversed
dá:
fonte
reversed(range)
de graça por causa da ótimarange_reverse
otimização integrada ao CPython. Fiz alguns benchmarks rápidos e não consegui encontrar uma diferença significativa de custo entrestep=-1
ereversed()
no Python 2.7 e 3.3. Observe também que este idioma é usado em heapq .xrange
em seus testes do Python 2.7,reverse
estará operando em uma lista comum já gerada, não em um objeto de intervalo; então você está dizendo que qualquer lista pode ser revertida com eficiência, ou apenasrange/xrange
objetos? (o código heapq ao qual você vincula envolve um objeto de intervalo do Python 3).step=-1
parareversed()
entre Python 2.3 e 2.4reversed(range(10))
não pode, possivelmente, saída4
através0
. Talvez você quis dizerrange(5)
?Isso daria a você
6,5,4,3,2,1
Quanto a
daria a você
5,4,3,2,1,0
fonte
fonte
fonte
0 é o valor condicional quando esta condição é verdadeira, o loop continuará em execução. 10 é o valor inicial. 1 é o modificador onde pode ser um decremento simples.
fonte
Atrasado para a festa, mas para qualquer pessoa encarregada de criar seus próprios ou quiser ver como isso funcionaria, aqui está a função com um bônus adicional de reorganizar os valores start-stop com base no incremento desejado:
Incremento negativo:
Ou, com start-stop invertido:
Resultado:
Incremento regular:
Resultado:
Incremento zero:
Resultado:
fonte
Para python3 onde
-1
indica o valor que deve ser decrementado em cada etapafor n in range(6,0,-1): print(n)
fonte