Na referencia da linguagem [1] não cita algo sobre executar em ordem inversa
Alguns código para demostração:
- Reverse não existe em tuple
>>> x = ('a','b','c')
>>> type(x)
<type 'tuple'>
>>> x.reverse()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'reverse'
- Reverse em lista ok!
>>> z = ['a','b','c']
>>> type(z)
<type 'list'>
>>> z.reverse()
>>> z
['c', 'b', 'a']
- Porem não retorna a lista
>>> for i in z.reverse():
... i
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable
>>>
1- http://docs.python.org/tut/node6.html#SECTION006200000000000000000
--
Bruno Gomes
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html
(Na verdade não reverte, mas gera um iterador revertido)
[]'s
- Walter
2008/2/15 Bruno Gomes <brunoper...@gmail.com>:
>>> a=(1,2,3)
>>> tuple(list(a)[::-1])
(3, 2, 1)
2008/2/15 Walter Cruz <walte...@gmail.com>:
----------------------------------------------------------------
Ricardo Bittencourt http://www.mundobizarro.tk
ric...@700km.com.br "Save the trees. Eat more woodpeckers"
------ União contra o forward - crie suas proprias piadas ------
> Pra reverter de verdade dá pra fazer assim:
>
>>>> a=(1,2,3)
>>>> tuple(list(a)[::-1])
> (3, 2, 1)
na verdade:
>>> a = (1, 2, 3)
>>> a[::-1]
Não precisa transformar em lista e depois em tupla :) e reverse não
retorna nada pq ele é inplace... python é OO e funcional lembre-se
sempre disso. se tu quer o resultado use a slice notation, se quiser o
metodo OO use o operador reverse de listas (tuplas não tem pq elas são
imutaveis).
:)
--
Leonardo Santagada
Talvez vc poderia fazer assim:
z.reverse()
for i in z:
... i
Não conhecia esse terceiro parâmetro nos slices...
Em 15/02/08, Leonardo Santagada <sant...@gmail.com> escreveu:
>
>
>
> >>> a = (1, 2, 3)
> >>> a[::-1]
>
> Não precisa transformar em lista e depois em tupla :) e reverse não
> retorna nada pq ele é inplace... python é OO e funcional lembre-se
> sempre disso. se tu quer o resultado use a slice notation, se quiser o
> metodo OO use o operador reverse de listas (tuplas não tem pq elas são
> imutaveis).
>
> :)
>
--
Bruno Gomes
Grande Pinguim, legal a tua dica por exibir o terceiro parâmetro do
slice, mas vamos combinar que desse jeito a coisa fica tão feia que
nem parece Python...
Acho que o jeito canônico de fazer isso hoje é assim:
>>> a = (1, 2, 3)
>>> tuple(reversed(a))
(3, 2, 1)
>>>
O Guido deve ter colocado o reversed como função primitiva, porque
imaginou que seria muito útil, e certamente é a forma mais legível e
genérica para acessar qualquer sequência em ordem inversa.
Vale notar que o reversed() retorna um generator, o que significa que
ele não duplica os dados da sequência. No caso acima a duplicação só
ocorre quando eu passo o reversed(a) como para o construtor tuple. Se
a intenção fosse apenas percorrer os itens em ordem inversa, não seria
necessário reconstruir a tupla, claro:
>>> for i in reversed(a): print i
...
3
2
1
>>>
[ ]s
Luciano
"
>*Shouldn't that `string.split' be*
*>`line.split'?*
No it's definitely "string.split(line)". The point is, for better or for
worse, strings don't have attributes, so all string operations that aren't
built-in operations (like "+" for concatenation) have to be functions.
The module "string" is a collection of such functions.
"
E tambem ta sendo discutido adicionar alguns metodos a tuplas no python 3.0,
ou seja, as tuplas serem assim foi porque o Guido quis que fosse assim e
manteve assim. Era so isso que eu queria dizer. Normalmente eu nao respondo
emails assim (offtopic/discussao/correcao), mas deu vontade so pra variar ;p
--
-- Guilherme H. Polo Goncalves
[As partes desta mensagem que não continham texto foram removidas]
Eu não disse isso, mas objetos imutaveis não vão ter metodos q mudam
os dados *inplace*.
--
Leonardo Santagada
--
-- Guilherme H. Polo Goncalves
[As partes desta mensagem que não continham texto foram removidas]
,-----------------------------------------------------------.