Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

lanah_

A diferenca de duas listas

Mensagens Recomendadas

lanah_    0
lanah_

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???  ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

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()

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
lanah_    0
lanah_

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

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].

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade