Hoje, como havia falado no último post sobre estruturas de dados, vou falar hoje sobre Listas em Python.
Listas são conjuntos ordenados de dados. Em python, estes conjuntos podem conter vários tipos de dados misturados, visto que tudo em Python é objeto.
Assim, além de tipos de dados básicos como inteiros, decimais e caracteres, as listas podem conter qualquer outro objeto da linguagem.
Vejamos como as listas são criadas em python:
# Criando uma lista vazia
l = []
#Criando uma lista já com valores
l1 = [1, 2, 3, 'a', 'd', l]
#Criando uma lista de letras a partir de uma string
l2 = list("abracadabra")
No primeiro comando, criamos uma lista vazia, que poderá ser preenchida futuramente. Em seguida, criamos uma lista, já atribuindo valores no momento da criação.
Perceba que ao criar a lista são passados valores inteiros, letras e a lista que foi criada vazia anteriormente. Assim, demonstramos que uma lista pode receber qualquer tipo de objeto, e que pode ter objetos de tipos diferentes ao mesmo tempo!
Na lista três, utilizamos a função list() para transformar uma string em uma lista.
Mas, as listas em Python não são estáticas. Podemos inserir e retirar valores conforme bem quisermos a qualquer hora durante a execução do programa. Vejamos:
#vamos acrescentar valores à lista l criada anteriormente
# append(o) insere um objeto o no final da lista
l.append(1) # a lista ficará assim [1]
l.append(3) # a lista ficará assim [1, 3] # insert(i, o), insere o objeto o na posição i (a primeira posição é zero)
l.insert(1, 2) # a lista ficará assim [1, 2, 3]
l.insert(0, 5) # a lista ficará assim [5, 1, 2, 3]
# remove(o) remove a primeira ocorrência do objeto o
l.append(5) # a lista ficará assim [5, 1, 2, 3, 5]
l.remove(5) # a lista ficará assim [1, 2, 3, 5]
# pop(i) remove e retorna o objeto da posição i
# pop() remove e retorna o último elemento da lista
l.insert(3, 6) # a lista ficará assim [1, 2, 3, 6, 5]
l.pop(3) # a lista ficará assim [1, 2, 3, 5] e retornará 6
l.pop() # a lista ficará assim [1, 2, 3] e retornará 5
#index(o) retorna o índice do objeto o
l.index(3) # retorna 2
l.append(3) # a lista ficará assim [1, 2, 3, 3]
l.index(3) # continua retornando 2 pois é a primeira ocorrência do 3
# count(o) conta quantas vezes o objeto o aparece na lista
l.count(1) # retorna 1
l.count(3) # retorna 2
l.pop() # a lista ficará assim [1, 2, 3] e retorna 3
# extend(L) estende a lista com a lista L
l.extend([0, -1, -2]) # a lista ficará assim [1, 2, 3, 0, -1, -2]
# sort() organiza os itens da lista nela mesma
l.sort() # a lista ficará assim [-2, -1, 0, 1, 2, 3]
# reverse() inverte os elementos da lista nela mesma
l.reverse() # a lista ficará assim [3, 2, 1, 0, -1, -2]
Agora é hora de treinar!
Abram o terminal, e comecem a brincar com as listas! Vejam como funcionam os comandos!
Uma dica! o comando help mostra informações sobre um comando! Experimente, após criar uma lista l, o comando:
>>> help(l.sort)
No próximo post tem muito mais!
Um desafio!
Quem imagina como fazer uma matriz em Python usando o que vimos hoje???
Deixe sua resposta nos comentários!
Comentem!
Assinem o Feed e não percam nenhum Post do Programe em Python!
Abraço!
como atribuir uma lista em uma lista . Exemplo:
ResponderExcluirlista1 = lista2;
porem, toda vez que eu mudo somente o valor da lista2 dentro de um for, mesmo que a lista1 e a atribuição esteja fora desse for, os valores sao alterados em ambas as variaveis. Porque? Como fazer pra nao alterar o valor da lista1 dentro desse for?
Fala amiguinho! Pode colocar seu nome na próxima, hehe ter dúvida não faz mal a ninguém!
ResponderExcluirQuando vc faz lista1=lista2 você esta falando que as duas variáveis se referem ao mesmo objeto, por isso quando vc muda uma a outra também se altera.
Pra alterar somente uma, faz assim:
lista1=lista2[:]
Assim, vc faz lista1 ser uma cópia de lista2 e não o próprio lista2.
Abraços!
estou fazendo um programa para remover um determinado intervalo em uma lista estática, e após eu fazer esse determinado intervalo receber None, eu preciso colocar os Nones à direita nesta lista. Não consigo resolver esse problema pois por ela ser estática está dificultando muito...
ResponderExcluirOi Gabriel, tudo bem? Não sei se entendi bem seu problema... Você precisa manter o tamanho da lista inalterado, é isto?
ResponderExcluirNão faz muito sentido fazer isto em python, mas tá com cara de exercício de aula...
Me manda no email o que vc fez que eu vejo se entendo o que você precisa.
Abraço!
por genteleza alguem sabe qual a funcao para somar os elementos de uma lista . assim [1,2,3,4,5,6] soma todos esses elementos que dar 21. ? desde ja agradeco.
ResponderExcluirOlá ipprogrma!
ExcluirPara isto, existe a função sum.
Por exemplo, se você tem a lista a, faça sum(a).
Obrigado pelo comentário!
queria criar uma matriz vazia de tamanho 3x3 fazendo assim:
ResponderExcluirlista = [[None]*3]*3
for i in range (len(lista) ):
for j in range (len(lista[i])):
lista [i] [j] = int(input("digite"))
print(lista)
mas digitando assim:
digite1
digite2
digite3
digite4
digite5
digite6
digite7
digite8
digite9
os resultados foram assim:
[[7, 8, 9], [7, 8, 9], [7, 8, 9]]
o que tem errado? pode me ajudar?
Olá Luiz!
ExcluirO problema com seu código é o seguinte:
Quando você faz [[None]*3]*3 você está criando uma lista de três posições com None e clonando esta lista 2 vezes, então no lugar de ter [lista1, lista2,lista3] você tem [lista1,lista1,lista1]
Assim os valores de todas as linhas da matriz são os três últimos atribuídos.
Pra criar um objeto diferente pra cada posição da matriz crie assim:
matriz = [[None for i in range(3)] for i in range(3)]
Esta tecnica que usei se chama List Comprehention e é uma das formas mais importantes de manipular listas:D
Espero ter ajudado!
Abraço!
Obrigado, procurei em vários sites e não achei nada.
ExcluirVc sabe como fazer a entrada de dados com interface gráfica?(como o JOptionPane do java)
Bom, o python não tem uma API de interface padrão como o java tem a swing, então você tem várias opções.
ExcluirEu particularmente gosto muito de usar pyqt4 e pyside mas também existem wxpython e pygtk que são excelentes!
obrigado...mas se não for pedir muito...poderia me dar um exemplo de entrada de um inteiro e o que tenho que importar...começei a estudar python ontem e não sei quase nada ainda...
ExcluirNa verdade, a explicação não é tão simples como importar o JOptionPane e usar, como falei, Python não tem uma biblioteca gráfica padrão como o Java tem, então, você tem que instalar a bibliotevca e aprender a usá-la. Aqui vai um bom tutorial sobre pyqt4 que pode te ajudar.
Excluirhttp://zetcode.com/tutorials/pyqt4/dialogs/
agora entendi o que disse...para criar um janela em python não é tão simples quanto o java..pois vc tem que criar os botões e as janelas,etc...é isso?
Excluirvc sabe se tem como usar o programa QtCreator para janelas em python?
Então, Luiz, dá pra fazer com diálogos, mas não compensa... Dá pra usar qtcreator, depois usa o pyuic pra gerar o código em python. talvez neste tutorial que te passei tenha isto, dá uma olhada aí... tem a documentação oficial do PyQt4 também.
ResponderExcluirEspero ter ajudado!
Gostaria de saber como eu faço para descobrir em uma lista, qual o numero que tem em maior quantidade na lista.
ResponderExcluirOlha só, no objeto lista vc tem o método count, ele te retorna o número de repetições de um elemento.
ExcluirE você pode criar um objeto que só contenha os objetos, sem considerar as repetições criando um objeto set.
Abaixo a primeira forma que pensei pra te responder. Não posso dizer que será a melhor forma, mas funcionará perfeitamente pra qualquer lista.
lista = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
resposta = {}
for x in set(lista):
resposta[x]=lista.count(x)
Você terá no objeto resposta um dicionário contendo o valor como chave e a contagem como valor.
Espero que tenha ajudado!
Abraço!
Aqui não apareceu, mas o "resposta[x]=lista.count(x)" deve estar identado pois está dentro do for
ExcluirA partir do momento que você tem este dicionário, você pode fazer muitas coisas, inclusive encontrar o elemento mais frequente.
ExcluirNo tutorial da documentação onde fala das esruturas de dados tem exemplos bastante interessantes que talvez possam te ajudar também a entender melhor cono usá-las.
ExcluirOlá Julio!
ResponderExcluirestou com uma lista de exercícios para resolver e estou com muita dificuldade
vc poderia me ajudar?
Me envia um email dando mais detalhes e se puder eu te ajudo sim.
ExcluirObrigado pelo comentário ;)
Júlio, me dá um help aqui. Se eu tenho uma lista l=[1,2,3,4,5], e quero eliminar um "item", eu sei que l.remove(A) remove a primeira ocorrência de A e que l.pop(A) remove a posição A e retorna o se conteúdo. Gostaria de saber se tem algum modo de eu remover a posição A mas sem retornar o conteúdo. Entende? Por exemplo, tenho l=[1,2,3,4,5], quero excluir a posição 3, mas NÃO quero que retorne nada (que no caso retornaria o 4). Há alguma forma de fazer isso? Desde já, grato!
ResponderExcluirOlá Mateus! Na realidade, basta você ignorar o retorno do pop... se você não atribui ele a nada é como se não houvesse retornado ;)
ExcluirQualquer coisa, pergunte aí!
Abraço!
Acho que eu estava fazendo alguma besteira. Logo após ter postado aqui, fui mexer no código e funcionou =P hehehe. Mas obrigadão mesmo assim! E parabéns pelo blog ;]
ExcluirImagina. sem problemas! Eu que agradeço o comentário!
ExcluirOlá Julio!
ResponderExcluirEstou cm duvidas em uma questao de listas, gostaria que voce me ajudasse.
Questão: Faça uma função que recebe uma lista de strings, se a lista tem mais de 5 elementos retorna uma nova lista com os cinco primeiros, se a lista inicial tem menos de 5 elementos o ultimo elemento é novamente adicionado até que a lista tenha 5 elementos, após isso retorna a lista com 5 elementos.
Desde já agradeço!
Amigão, não vou resolver o exercício pra você, né? Me fala exatamente qual a sua dúvida que eu te ajudo!
ExcluirUma dica: use slices para pegar parte da lista, por exemplo
Excluirx = [1, 2, 3, 4]
x[:3]
[1, 2, 3]
o tamanho da lista você pega com a função len, tipo len(x) que retornaria 4, neste caso
Boa sorte!
Abraço!
Júlio estou com algumas dúvidas nessa questão e gostaria de ver a resolução, se possível.
ResponderExcluirFaça uma função que receba 2 números inteiros e retorne uma lista com 5 elementos em que:
- O primeiro elemento é a soma dos dois argumentos;
- O segundo elemento é o produto dos dois argumentos somado com o primeiro elemento;
- O terceiro elementos é resultado da soma do primeiro elemento com o resultado da subtração do primeiro argumento no segundo multiplicado pelo segundo elemento;
- O quarto elemento é a soma do primeiro com o produto do segundo pelo resultado da subtração do terceiro na divisão do segundo argumento pelo primeiro;
-O quinto elemento é a raiz terça do quadrado do 4º elemento.
Muito Obrigado.
Olha, fica difícil te ajudar se não diz exatamente qual a dúvida, não vou resolver o seu exercício. A ideia de exercícios geralmente e da pessoa aprender, não copiar ;)
ExcluirMas, simplificando as coisas, simplesmente gere os resultados e insira-os numa lista. Se você leu este artigo vai saber como fazer!
Abraço!
Amei o blog, td muito bem explicado. parabéns pela iniciativa. Muito bom mesmo.
ResponderExcluirMuito obrigado Maria!
ResponderExcluirQualquer dúvida ou sugestão será bem vinda!
Abraço!
Como faço pra mostrar todo o conteudo da lista, exemplo.
ResponderExcluirTenho um código onde
for MatchResponse in command.split('\n'):
if "Response Time" in MatchResponse:
ResponseTimeFluxo = []
ResponseTimeFluxo = MatchResponse.split(' ')[3]
else:
if "Test: " in MatchResponse:
id_fluxo = []
id_fluxo = MatchResponse.split(' ')[2]
# print MatchResponse.split(' ')[2]
finally:
print "ResponseTime = %s, id_fluxo=%s" %(ResponseTimeFluxo, id_fluxo)
Da forma acima, ele me mostra somente o ultimo registro da lista, existe uma forma de eu gravar tudo em uma lista e apresentar de forma repetida, a saida esperada é:
ResponseTime = xpo, id_fluxo=xpto
ResponseTime = xpoz, id_fluxo=xptoz (até a lista acabar.
Podem me ajudar?
Olá! Espero que esteja gostando do blog. Tem vários outros posts meus que podem te ajudar pelo que vi aqui. Mas te dar uma resposta mais direta, vamos analisar passo a passo que você fez:
Excluirfor MatchResponse in command.split('\n'):
....if "Response Time" in MatchResponse:
........ResponseTimeFluxo = [] #cria a lista dentro do for
........#sobrescreve a lista atribuindo outra coisa a ela
........ResponseTimeFluxo = MatchResponse.split(' ')[3]
....else:
........if "Test: " in MatchResponse:
...........id_fluxo = [] #aqui faz o mesmo que em cima
...........id_fluxo = MatchResponse.split(' ')[2]
finally:
....#faz um único print onde queria printar uma lista
....#se desse certo ficaria "ResponseTime = [1, 2, 3]..." por exemplo
....print "ResponseTime = %s, id_fluxo=%s" %(ResponseTimeFluxo, id_fluxo)
Em primeiro lugar, Finally não é um comando de continuação do for nem do if, somente do try/catch/finally.
Este programa não deveria nem rodar...
basta colocar o print depois do for e ele será executado sempre.
Quanto ao algoritmo, você tem 2 erros graves.
Instancia a lista dentro do for, então você sobrescreve ela o tempo todo. em seguida você atribui o valor à lista, sobrescrevendo novamente.
Conforme eu explico no post acima, para inserir dados na lista você tem que usar o append, então seria lista.append(valor)
Pra resolver isto, coloque as listas antes do for para elas serem alteradas lá dentro.
Para printar os elementos da lista, coloque este print dentro de um for do tipo
for (i, j) in zip(ResponseTimeFluxo, id_fluxo):
....print "ResponseTime = %s, id_fluxo=%s" %(i, j)
Espero que tenha ajudado, tendo mais dúvidas, fique à vontade para perguntar.
Abraço!
Obrigada, vlw me ajudou muito
ResponderExcluirNada, eu que agradeço!
ExcluirFica de olho no blog que eu espero ter novos posts em breve!
Olá Julio, muito obrigado consegui fazer da forma que queria, porém de forma um pouco diferente, veja como fiz.
ResponderExcluir1 Ponto, eu realmente estava fazendo errado e nem percebi sobre as listas e uso do append, isso me abriu os olhos sobre uma deficiencia que eu tinha.
eu fiz um controle com o while, contando quantas vezes eu queria mostrar o print com as listas (isso definido pelo usuário")
então, fiz assim.
fiz a declaração das listas fora do for:
ResponseTimeFluxo = []
id_fluxo = []
Depois eu fiz o laço for com a adição das listas.
for MatchResponse in command.split('\n'):
if "Response Time " in MatchResponse:
ResponseTimeFluxo.append(MatchResponse.split(' ')[3])
else:
if "Test: " in MatchResponse:
id_fluxo.append(MatchResponse.split(' ')[2])
Depois, fora do laço, existe uma variavel que define quantos itens da lista vou mostrar,
X = 0
while x < count:
print "Response_time: %s, id_fluxo: %s" %(ResponseTimeFluxo[x], id_fluxo[x])
x = x + 1
(essa variavel de controle, é feita por conta de uma necessidade de IDS que serão pré configurados).
Obs: Quero lhe agradecer e dizer que seu blog é muito bom, quero acompanhar e ver novos posts :)
Parabéns pela iniciativa e trabalho!
Bom, como você tem restrição do número de linhas que vai mostrar, aí faz sentido a variável de controle, do contrário, um for iterando sobre a lista é mais eficiente.
ExcluirSó duas coisas com relação à sua implementação:
Pra organizar melhor o código vocẽ pode usar elif no lugar de else: if:
E, se não me engano, x +=1 é mais rápido que x = x+1, então se sua aplicação precisar de velocidade pode ser mais interessante!
Muito obrigado pela interação aqui e qualquer outra dúvida ou sugestão é só postar ou mandar mensagem!
Logo posto mais!
Abraço!
Valéria Palmeira, sem querer excluí seu comentário, mas estão aqui o comentário e a resposta.
ResponderExcluir"Oii Julio, pesquisando para resolver um problema com listas python achei esse blog que gostei muito, tô precisando de ajuda, se possivel por favor.
É o seguinte,
lista = self.Proposicao.split(" ")
x = 0
while x <= len(lista):
for lista[x] in self.ListaLigacao:
if lista[x] in self.ListaLigacao:
self.lista2.insert(x, lista[x])
x = x + 1
a variavel Proposicao eu passo como parametro da função e a ListaLigacao é uma variavel global, so que quando executa dá o erro: IndexError: Lis assignment index out of range.
Não sei se apenas com esse trecho do codigo é possivel responder, mas posso mandar mais partes do codigo.Há dias que tento resolver esse probleminha, se poder ajudar eu agradeço muito."
Bom, vamos começar pelo erro que está estourando a excessão que você menciona.
Quando você faz while x <=len(lista) você assume que x terá os valores de 0 até o tamanho da lista inclusive, então quando ele tenta o último valor (quando x é do tamanho da lista) esta posição não existe, pois a lista vai de 0 até len(lista)-1 posições.
faça while x<len(lista) e não terá mais a excessão.
Outra coisa que terão problema é o "for lista[x] in self.ListaLigacao" quando você faz isto você substitui o valor de lista[x] por um elemento de self.ListaLigacao, assim sua verificação seguinte será sempre verdadeira. Verifique o que você realmente quer ali e reescreva o código.
Espero ter ajudado!
Fique à vontade para novas perguntas, terei mais cuidado com os comentários.
Abraço!
Oii Julio, realmente tudo isso que vc me explicou esta acontecendo, so que eu quero que seja feito mesmo a comparação entre o elemento do lista[x] e todos os elementos que estão na outra lista, porém nao quero que sempre retorne verdadeiro, quero que apenas retorne verdadeiro quando o elemento q esta na proposição tbm esteja na listaLigacao, para que esse elemento seja incluido na outra lista e fique guardado para ser usado posteriormente, so que ja tentei alterar de diversas formas e nao consigo.
ResponderExcluirMas então está fácil.
Excluirvocê não precisa do while
faz somente "for x in lista:"
e verifica se x está na self.ListaLigacao
Se estiver, você faz lista2.append(x), colocando o x no final da lista 2. O insert só é recomendável se você precisar inserir o item na posição x, o que não me parece o caso.
Como não conheço o problema que está tentando resolver talvez não esteja dando as melhores dicas, mas espero estar ajudando!
Qualquer coisa, estamos por aqui rs ;)
Assim você resolve o problema...
Sempre que acontecer isto, faz um teste de mesa, vê o que está acontecendo com cada variável que você vai enxergar a falha.
Expero ter ajudado!
Tô sim fazendo o teste de mesa, porem preciso de uma ferramenta de teste, e o append eu preciso porque tenho que inserir em ordem, para depois juntar todas as strings e formar uma frase, isso faz parte do 3º modulo de um trabalho que estou desenvolvendo, esse problema vai um pouco além do postado aqui, anteriormente ja havia tentando a alternativa que vc me sugeriu, muitissimo obrigada pela ajuda, acredito que ficarei usando sua boa vontade em ajudar, tem muitos tópicos interessantes nesse blog.
ResponderExcluirAntes de mais nada, fico feliz de você ter gostado do blog! Estou há um tempo sem postar, mas já estou me pogramando para voltar.
ExcluirQuanto ao seu problema, se entendi você tem que ler a lista "lista", e verificar entre os elementos dela, quais se encontram em ListaLigacao, pra depois colocar em lista2 na mesma ordem em que aparecem em lista.
Por esta óptica, basta fazer como te disse que vai funcionar.
Se a questão for mais complexa, acho que compensa conversarmos por email, aí você me manda o enunciado do problema e eu te ajudo a encontrar a solução.
Quanto ao teste de mesa, basta lápis e papel rs precisa de ferramenta não ;)
Abraço!
num1=[1,2,3,4,5]
ResponderExcluirnum2=[5,6,7,3,9]
for i in num1:
for j in num2:
soma=(i+j)
print soma
Quero a soma dos itens dessas duas listas, porém ao executar ele mostra esse resultado:
6
7
8
4
10
7
8
9
5
11
8
9
10
6
12
9
10
11
7
13
10
11
12
8
14
e eu quero apenas uma , não estou encontrando o erro, por favor help
Olá Maria!
ExcluirSeu código tem um erro bem simples...
Você varre a segunda lista para cada elemento da primeira. Você tem que varrer as duas juntas.
Tem 3 soluções pra isto:
for (x, y) in zip(lista1, lista2):
....print x+y
for i in range(len(lista1)):
....print lista1[i] + lista2[i]
for x in map(lambda a, b: a+b, lista1, lista2):
....print x
Você precisa percorrer as duas listas simultaneamente.
Espero que tenha ajudado!
Abraço!
Oi, pergunta ! Eu tenho um lista=[1,2,3,4,0,0,0,0,0] quero fazer um média, mais entes quero excluir os zeros, como faço ?
ResponderExcluirBom, isto depende de alguns detalhes, por exemplo os zeros ficarão sempre no final da lista ou podem estar eventualmente no meio? Caso haja zeros no meio estes devem permanecer ou ser recluidos também?
Excluiroi queria um algoritmo para inserir dados em uma lista de tamanho limitado, seguindo a política FIFO. E retirar dados desta lista de acordo com um contador de tempo predefinido, ex. Retirar pacotes (FIFO) a cada 15 segundos. podia me ajudar...
ResponderExcluirBom pra inserir e retirar objetos de uma lista é só usar insert e pop os dois métodos recebem como parâmetro a posição onde vai ser inserida ou de onde será retirado o dado.
ExcluirPra esperar, importe a função sleep
from time import sleep
e faça
sleep(15) pra esperar 15 segundos
Espero ter ajudado!
Abraço!
Fala! Teu site é muito bom. Pena que nem sempre consigo acessar por causa desse erro 101 no browser. Eu tenho um exercício que talvez você possa me ajudar. É solicitada a criação de um arquivo e pede-se para escrever um texto com algumas linhas. Depois, é pedido para guardar numa lista as três últimos caracteres/letras que aparecem antes de CADA vogal.
ResponderExcluirEu fiz algo desse jeito:
# Criando os arquivos
import re
def CriaArq3():
''' Esta função um arquivo e insere um texto qualquer no mesmo usando uma lista'''
# Arquivo 1 - Recebe o texto
Criar = open('Arquivo4.txt','a') # Criou o arquivo - opção a - Esta opção sobrescreve o conteúdo do arquivo.
#Coloquei um texto lá para acrescentar ao arquivo
a=('''Se voce nao aceitou o conselho, te respeito\
Resolveu seguir ir atras, cara e coragem\
So que voce sai em desvantagem se voce nao tem fe, se voce nao tem fe\
Te mostro um trecho e uma passagem de um livro antigo\
Pra te provar e mostrar que a vida e linda\
Dura, sofrida, carente em qualquer continente\
Mas boa de se viver em qualquer lugar\
Rappa''')
Criar.write(str(a))
vogais='aeiou'
for i in vogais:
a= a.replace(i,'')
x=a.split()
print x
print '----------------------------------------------------'
Criar.write('\n') # Finaliza a linha
Criar.close() # Fechando o arquivo
# O problema pede que separe as três últimas letras antes de cada vogal. Acho que resolvi parte desse problema, mas não estou conseguindo captar essa ideia das três últimas letras antes de cada vogal. Tem algum método que possa fazer isso mais rapidamente? Será que pode me dar uma força? Grato.
Bom, vamos começar hehe
ExcluirVocê importa a biblioteca de expressões regulares mas não usa, é uma boa você usar sim, ok. Vai facilitar muito as coisas.
No seu código você substitui as vogais por uma string vazia. Não acho que esta é a melhor opção.
Quando você usa expressões regulares você vonsegue pegar grupos dentro de uma busca.
http://aurelio.net/regex/
Dá uma olhada nesse livro online de expressões regulares tenho certeza que vai te ajudar muito!
Se tiver problemas fala aí que vejo como te ajudo!
Abraço!
Se eu tenho um labirinto em formato de matriz, como faço pra alterar o lugar de um boneco nessa matriz?
ResponderExcluirNo caso, o boneco seria um x ( um dos elementos da matriz)
A idéia é que seja +- isto?
ExcluirVocê fala de um labirinto tipo rogue?
Pra alterar a posição do boneco basta você retirar o x da posição onde ele estiver e inserir na próxima posição.
Se a dúvida for mais específica, pode detalhar mais que tento te ajudar.
Pense que sua matriz será algo como [[0,0,x,0],[0,0,0,0]]. Neste caso, pra acessar o boneco seria lista[0][2]
Para mudá-lo de lugar, retire-o dali e mude para lista[0][3], por exemplo, ou lista[1][2], pra andar uma casa pra direita ou para baixo respectivamente.
Abraço!
Como faço para ordenar uma lista sem usar o sort()?
ResponderExcluirOlá, existem inúmeros métodos pra se ordenar uma lista.
ExcluirSegue abaixo um link onde pode encontrar mais informações!
http://pt.m.wikipedia.org/wiki/Algoritmo_de_ordena%C3%A7%C3%A3o
como posso contar quantas vezes uma palavra se repete na frase?
ResponderExcluirex: good for me good for you learn for forever you will do
"for" =3
Bem simples!
Excluirx = 'good for me good for you learn for forever you will do'
x.count('for')
Espero ter ajudado!
ola boa tarde eu tenho uma duvida de como mostrar só números pares na minha lista ?
ResponderExcluirobrg
Você quer dizer printar só os pares? faz um if x % 2 == 0 e printa só os que retornarem verdadeiro.
ExcluirFaça um programa que leia um número indeterminado de valores, correspondentes a notas, encerrando a entrada de dados quando for informado um valor igual a -1 (que não deve ser armazenado). Após esta entrada de dados. A minha duvida seria no caso aonde é pedido quando chegar a - 1 quando for informado eu usarei um break ? mas como fazer para ele não ser armazenado na minha lista ??
ResponderExcluirMuito simples, Roger, dentro do laço, você verifica se o valor é -1, se for dá um break senão acrescenta na lista.
ExcluirTambém pode usar um while valor != -1
Abraço!
opa, estou começando com python e estou meio perdido para criar um simples vetor..
ResponderExcluirvamos para um exemplo bem básico... digamos que eu precise de um algoritmo onde o usuário digita 2 valores e ele mostra o vetor no final.. a forma que achei foi:
tam = 2
vet = [0]*tam
for i in range(tam):
print "Valor para posicao", i, "do vetor"
vet[i] = input()
print "o vetor digitado foi", vet
gostaria de saber se tem uma forma mais simples de fazer isso? tentei definir o tamanho do vetor direto na variavel "vet" mas não consegui..
Olá joão!
ExcluirNa verdade, você está pensando da forma errada! Seu programa parece que foi escrito em C com sintaze do python! hehe
Keep it simple! Python é dinãmica, você não precisa indicar o tamanho que a lista terá.
A forma mais simples de todas seria algo assim:
vet = eval(raw_input('Insira um vetor na forma [elemento1, elemento2, ...]'))
print 'O vertor difitado foi', vet
agora se você quiser fazer interativo mesmo, faça algo assim:
vet = []
for i in range(2)
____vet.append(input('Valor para a posicao %d do vetor' % i)) #usei _ para identação
print 'O vetor digitado foi vet'
Dê uma lida na postagem aqui acima para entender melhor as listas.
Qualquer coisa, pergunte novamente. Abraço!
olá, julio
ResponderExcluirqueria saber se há a possibilidade de, a partir do input, criar uma nova lista. por exemplo:
nome=input("Insira um nome: ")
>>> matheus
e então o "matheus" passar a ser uma lista, como "matheus=[]", preparada para ser utilizada
obrigado
Olá MSiquara
ExcluirPode assim
nome = raw_input('Insira o nome da lista:') #input para números raw_input para strings
exec('%s=[]' % nome)
Mas usar exec pode trazer vários problemas de segurança a uma aplicação, pois qualquer coisa que for digitada será executada como código python.
Abraço!
Olá Julio,
ResponderExcluirestou fazendo uma lição e em uma das etapas eu preciso comparar os elementos de uma lista e atribuir valor 1 se eles são iguais e 0 se eles são diferentes.
Por exemplo:
lista=["a","b","b","c","a"]
elemento na posição 0 é igual ao na posição 1? 0
elemento na posição 1 é igual ao na posição 2? 1
e assim por diante...
A ideia é que consiga fazer isso para listas de tamanho e composição diferentes. Você tem alguma sugestão?
Obrigado!
Abs