• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

a13293

Duvida Listas....!!

8 mensagens neste tópico

boas!! ca estou eu com mais uma duvida...

é o seguinte quero fazer uma funcao que rebe listas e compara cada elemento da lista e conta quanta vezes cada elemento aparece nas outras listas!!!

por exemplo

list1=[ola , mundo,python]
list2=[eu, ola,dany]
list3=[dany,python,ola]

depois ter a saida:

ola 3

mundo 1

python 2

eu 1

dany 2

eu ja tentei com o "in" mas nao estou a conseguir!!!!

obrigado....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tenho neste momento o interpretador instalado, mas podes tentar da seguinte maneira: primeiro crias uma lista que vai conter os elementos únicos das listas que queres incluir na pesquisa. Depois utilizado um ciclo for iteras por todos os elementos da lista que contem os elementos únicos, verificas se o elemento está em cada lista original com o in. Caso estejas podes incrementar por exemplo uma variável temporária para saber quantas vezes encontraste o elemento. Espero ter ajudado! :(

Já agora, também existe o método .count.

count(  x)

    Return the number of times x appears in the list.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, apesar de ser ainda um iniciante. isto foi o que fiz assim muito rapidamente.

Acredito que acha uma melhor maneira de fazer, mas não me lembrei :)

Bem, cá vai ele:

# Primeiro de tudo... As listas 

list1=["ola", "mundo", "python"]
list2=["eu", "ola", "dany"]
list3=["dany", "python", "ola"]

contador = 0 # Vamos criar um contador para manter a contagem das vezes que as palavras aparecem nas listas.

def contagem(palavra): # Funcao para fazer as contagens que vai usar a variavel "palavra" (ja tratamos disso mais a frente)
global contador # Vamos usar o contador definido antes (como foi defenido fora da funcao, temos que o "importar")
if palavra in list1: # Se a palavra estiver na list1
	contador = contador + 1 # Adiciona mais um valor ao contador
if palavra in list2: # Se a palavra estiver na list2
	contador = contador + 1 # Adiciona mais um valor ao contador
if palavra in list3: # A mesma coisa...
	contador = contador + 1 # Yup... E isso
print palavra, contador # imprimir a palavra e o contador
contador = 0 # Voltar a por o contador a 0, porque senao ia estar sempre a adicionar 
raw_input() # Apenas para evitar que o script saia logo 

def procura(): # Funcao para a procura das palavra
print """Queres procurar uma palavra na lista?
Diz-me qual e: """, # Uma pequena mensagem para escolheres a palavra
palavra = raw_input() # Raw_input, para digitares a palavra (penso que podia por a mensagem entre os parentises do raw_input, mas eu prefiro o codigo assim )
contagem(palavra) # Por fim chama a funcao "contagem" usando a variavel palavra defenida acima

procura()

Não está assim grande coisa, pois, tal como disse, ainda sou um iniciante :D

Talvez depois o Triton te possa ajudar mais.

Já agora, se quiseres, tens o ficheiro de texto com o código em anexo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nssa solução tens de dizer qual é a palavra que queres procurar, ele quer que dadas as listas, o programa diga logo as palavras encontradas. :)

Mas bom trabalho! :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nssa solução tens de dizer qual é a palavra que queres procurar, ele quer que dadas as listas, o programa diga logo as palavras encontradas. :)

Mas bom trabalho! :)

Ah ok... Tenho de ver isso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois o Triton tem razao!!!..

mas obrigado pelas dicas...

vou ver isto depois logo digo alguma coisa...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lista1=["ola", "mundo", "python"]
lista2=["eu", "ola", "dany"]
lista3=["dany", "python", "ola"]

lista4=[]

for i in lista1:
    if i not in lista4:
        lista4.append(i)

for i in lista2:
    if i not in lista4:
        lista4.append(i)

for i in lista2:
    if i not in lista4:
        lista4.append(i)

for i in lista4:
    print i, lista1.count(i)+lista2.count(i)+lista3.count(i)

Output:

=========

>>>

ola 3

mundo 1

python 2

eu 1

dany 2

>>>

Já não programava em Python há algum tempo. :biggrin: O algoritmo não é o mais eficiente, but it gets the job done! :)


EDIT:

import sets

lista1=["ola", "mundo", "python"]
lista2=["eu", "ola", "dany"]
lista3=["dany", "python", "ola"]

lista = sets.Set(lista1+lista2+lista3)

for i in lista:
    print i, lista1.count(i)+lista2.count(i)+lista3.count(i)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lista1=["ola", "mundo", "python"]
lista2=["eu", "ola", "dany"]
lista3=["dany", "python", "ola"]

lista4=[]

for i in lista1:
    if i not in lista4:
        lista4.append(i)

for i in lista2:
    if i not in lista4:
        lista4.append(i)

for i in lista2:
    if i not in lista4:
        lista4.append(i)

for i in lista4:
    print i, lista1.count(i)+lista2.count(i)+lista3.count(i)

Output:

=========

>>>

ola 3

mundo 1

python 2

eu 1

dany 2

>>>

Já não programava em Python há algum tempo. :biggrin: O algoritmo não é o mais eficiente, but it gets the job done! :)

NIce, por acaso até está bem pensado... Mas só por acaso ;) ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora