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

Sign in to follow this  
lanah_

A diferenca de duas listas

Recommended Posts

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

Share this post


Link to post
Share on other sites
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()

Share this post


Link to post
Share on other sites
djthyrax

É o que o pedrotuga disse.

Outra hipótese é:

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


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!

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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].


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!

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.