tejano96 Posted September 7, 2007 Report Share Posted September 7, 2007 Slicing Este tutorial tem como objectivo explicar e dar alguns exemplos da forma como podemos usar a funcionalidade slicing. Traduzindo slice para Português teremos a palavra "fatia" e o que faz não é nada mais anda menos do que retirar uma fatia. Tal como se pode indexar para acedermos a elementos individuais podemos usar o comando slice para aceder a um gama de elementos. O slice é bastante útil para podermos retirar partes de uma sequência, seja ela numérica ou alfanumérica. A numeração é extremamente importante para este tipo de operações e acho que será altura de dar alguns exemplos de como podemos usá-la. >>> n = (1, 2, 3, 4, 5, 6, 7) n = [index 1: index 2: passos] desta forma podemos definir a amplitude a retirar/visulaizar e o nº de passos ou saltos. Em baixo estamos a retirar da lista o index com a posição 0. O primeiro número na lista tem o index 0 e assim sucessivamente. >>> n[0] 1 O slicing está representado em baixo e tal como descrito na frase anterior o index 1 representa o 2º número na lista e o index 2 representa o digito presente na posição 4, isto por que o 2º index deve ser interpretado como "valor-1". >>> n[1:5] (2, 3, 4, 5) Exemplo de como se usam os indicies e respectiva numeração: P y T e a m 0 1 2 3 4 5 Se tivermos n = ‘PyTeam’, então: >>> n[0] 'P' >>> n[4] 'a' Se estivermos a falar em slicing então teremos o seguinte: >>> n[0:2] 'Py' >>> n [2:4] 'Te' Tambem poderemos usar valores negativos: P y T e a m -6 -5 -4 -3 -2 -1 >>> n[-6:-3] 'PyT' Não esquecer que se não colocarmos valores nas 2 primeiras posições, teremos todo o conteudo de um conjunto, neste caso teriamos: >>> n[:] 'PyTeam' Se adicionarmos a isto o facto de a contagem ser negativa, ou seja, o valor de step ser -1 então teremos: >>> n[::-1] 'maeTyP' Tutorial na wiki. Link to comment Share on other sites More sharing options...
JoaoRodrigues Posted September 7, 2007 Report Share Posted September 7, 2007 Mete isso com o Geshi para se perceber melhor 😉 Mas de resto, bom tutorial. Isto dá um jeito descomunal. Só para verificar capicuas por exemplo, basta usar um teste de lógica com esta última operação string[::-1]. Muito útil e essencial sem dúvida 😉 Link to comment Share on other sites More sharing options...
djthyrax Posted September 7, 2007 Report Share Posted September 7, 2007 Só para verificar capicuas por exemplo, basta usar um teste de lógica com esta última operação string[::-1]. Muito útil e essencial sem dúvida 😉 True, mas em php bastava um strrev() 😉 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
JoaoRodrigues Posted September 7, 2007 Report Share Posted September 7, 2007 Tendo em conta que eu venho disto.... program capicua(input, output) var num,, num_ori, num_inv: integer begin writeln('Introduza um numero: '); readln(num); num_ori := num; num_inv := 0 while num>0 do begin num_inv := num_inv*10+(num%10) num := num/10 end; if num_inv = num_ori: then writeln('E Capicua'); else writeln('Nao E capicua') end. Acho mais simples o [::-1]. Mas já que estás com coisas, tens também em Python a função string reverse http://www.python.org/doc/2.4.4/whatsnew/node7.html Link to comment Share on other sites More sharing options...
rolando2424 Posted September 7, 2007 Report Share Posted September 7, 2007 Um detalhe "técnico" P y T e a m 0 1 2 3 4 5 Seria mais assim P y T e a m 0 1 2 3 4 5 (porque o que conta é os espaços) Mas prontos, o resultado final é o mesmo 😉) Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente 😄 Link to comment Share on other sites More sharing options...
tejano96 Posted September 7, 2007 Author Report Share Posted September 7, 2007 Na realidade o que está no tutorial está correcto de acordo com a documentação de Python, no entantto, e não menos correcto para ser mais fácil memorizar pode-se usar a forma que sugeres ;-) Aqui vai o link : http://www.python.org/doc/1.5.1p1/tut/strings.html Link to comment Share on other sites More sharing options...
djthyrax Posted September 7, 2007 Report Share Posted September 7, 2007 Citação The best way to remember how slices work is to think of the indices as pointing between characters, with the left edge of the first character numbered 0. Then the right edge of the last character of a string of n characters has index n, for example: +---+---+---+---+---+ | H | e | l | p | A | +---+---+---+---+---+ 0 1 2 3 4 5 -5 -4 -3 -2 -1 So I guess, rolando2424 was right. 😉 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
tejano96 Posted September 7, 2007 Author Report Share Posted September 7, 2007 I would say that he is also correct ;-) Link to comment Share on other sites More sharing options...
mauro Posted October 25, 2007 Report Share Posted October 25, 2007 Criei uma classe bem simples para mostrar um aplicação com alguns conceitos abordados no tutorial. Correções e sugestões são bem vindas.. Mauro ---------- Código ---------- class listUtils: def __init__(self, objList): self.listObj = objList def first(self): '''first item''' return self.listObj[0] def last(self): '''last item''' return self.listObj[len(self.listObj)-1] def reverse(self): '''reverse object''' return self.listObj[::-1] def first_to(self, tamanho): '''lista[primeiro:x]''' return self.listObj[0:tamanho] def to_last(self, tamanho): '''lista[x:ultimo]''' return self.listObj[tamanho:len(self.listObj)-1] def size(self): '''tamanho''' return len(self.listObj) Pode ser que alguns não estejam familiarizados com orientação a objeto. Segue um exemplo de como usar a classe... Pode ser direto no prompt interativo palavra = "Língua Portuguesa" listFuncs = listUtils(palavra) llistFuncs.size() 17 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now