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

lanah_

A diferenca de duas listas

6 mensagens neste tópico

Para se achar a diferenca entre duas listas, por exemplo:

list1 = ['a','b','0'] e list2 = ['casa', 'Blab', '101'], o resultado seria: list = ['cs', 'Bla', '11']

def difference(list1, list2):
    diff_list = []
    for item in list2:
        if item in list1:
            diff_list.replace(item,"")
        return diff_list

De novo, ql o erro da minha funcaooo???  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

esse método chamado replace() não existe.

é a variável item que tens mudar e depois mete-la para dentro da tuda lista diff_list por exemplo com o método append()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É o que o pedrotuga disse.

Outra hipótese é:

return filter(lambda x: not x in list1, list2)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim?

def difference(list1, list2):
    diff_list = []
    for item in list2:
        x = item
        if not x in list1:
            diff_list.append(item)
        return diff_list

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso seria o que eu fazia. Mas de acordo com o exemplo que deste não é isso que queres fazer.

list1 = ['a','b','0'] e list2 = ['casa', 'Blab', '101'], o resultado seria: list = ['cs', 'Bla', '11']

O que tens que fazer é qq coisa do tipo isto:

indices = range(0,len(list1)-1)
for i in indices:
    #substituir as ocorrencias de list1[i] em list2[i]
    #podes usar por exemplo uma expressão regular (google-> python regex)
    #ou uma função feita por ti para substituir strings

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

def difference(list1, list2):
    diff_list = []
    for item in zip(list1, list2):
        tmp = ""
        for letra in item[1]:
            if not letra in item[0]:
                tmp += letra
        diff_list.append(tmp)
    return diff_list

Em alternativa ao zip() podes percorrer uma lista de indices como o pedrotuga disse e eu exemplifiquei no outro tópico.

pedrotuga, é range(0, len(list1)) ou range(len(list1)) porque o range(x, y) devolve [x, x+1, ... y-2, y-1].

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