Comentários do Blog

  1. Avatar de Magnun
    Realmente, você parece estar certo:
    Código :
    >>> l = [1,2,3,4,5,6]
    >>> l1 = []
    >>> l1.append(1)
    >>> l1.append(2)
    >>> l1.append(3)
    >>> l1.append(4)
    >>> l1.append(5)
    >>> l1.append(6)
    >>> from sys import getsizeof as size
    >>> size(l)
    60
    >>> size(l1)
    68
    >>> l
    [1, 2, 3, 4, 5, 6]
    >>> l1
    [1, 2, 3, 4, 5, 6]
    >>>
  2. Avatar de PEdroArthurJEdi
    Aparentemente, as listas de Python não são implementadas através de ponteiros. São vetores que o interpretador redimensiona conforme o necessário. Logo, os dados estão em regiões contíguas. Se você criar uma lista vazia e for adicionando ítens e medindo o tamanho dela, verá que é alocado mais espaço do que o necessário. Então, não é de se espantar que o tempo de percorrê-las seja baixo.
  3. Avatar de nennogabriel
    Muito bacana...
    fiquei mesmo surpreso com o [-1::-1] que pode ser muito mais util até que um .reverse() caso se queira pular 2 e inverter ao mesmo tempo.. bastando um [-1::-2]

    [CODE]>>> ver
    ['a', 'e', 'i', 'o', 'u', 'b', 'c', 'd']
    >>> ver[::]
    ['a', 'e', 'i', 'o', 'u', 'b', 'c', 'd']
    >>> ver[1::2]
    ['e', 'o', 'b', 'd']
    >>> ver[1::3]
    ['e', 'u', 'd']
    >>> ver[-1::1]
    ['d']
    >>> ver[-1::-1]
    ['d', 'c', 'b', 'u', 'o', 'i', 'e', 'a'][/CODE]
  4. Avatar de Magnun
    E ai PEdroArrthurJEdi,

    Suas explicações são sempre incríveis. Eu realmente devia ter abordado dessa forma antes de explicar. Mas o meu post na verdade não foi nem pra esclarecer esse tipo de assunto, mas pra fazer uma comparação entre os tempos de busca e espaço em memória. O que mais me chamou a atenção foi o fato da iteração pela lista não ficar tão atrás da busca do dicionário (quando fazemos menos de 700~800 buscas). Eu pessoalmente achei que em 200 buscas já seria mostrado uma grande diferença.

    Em conversas com outros usuários, formulei uma nova forma de busca para as listas, em breve estarei postando aqui!

    Obrigado pelo comentário e até a próxima.
  5. Avatar de fabiocs
    obrigado por mais esta aula..
  6. Avatar de fabiocs
    dicas de segurança.... muito importante...
  7. Avatar de PEdroArthurJEdi
    E aí, Magnum, tudo na paz?

    Tanto as questões da quantidade de memória e do tempo de busca são relativas a natureza das estruturas.

    Uma lista é um encadeamento de valores. Assim, para encontrar um valor numa lista, você tem que percorrê-la do início ao fim, tal qual está no seu código. Em relação ao consumo de memória, as listas precisam apenas do espaço necessário para armazenar os valores e um indicador (ponteiro) para a próxima posição.

    Os dicionários podem ser implementados através de diferentes abordagens. A que o Python se utiliza é baseado no conceito de tabelas hash.

    Uma função hash mapeia um dado de entrada em um valor numérico único. Uma tabela hash é uma estrutura de dados que se utiliza de funções hash para que a busca de dados seja feita de maneira mais rápida. Para isso, as tabelas hash pré-alocam vetores vazios para que sejam utilizados como espaço de armazenamento para as chaves e os dados. Abaixo vai um exemplo de uma tabela hash.

    th[0]: null
    th[1]: null
    th[2]: null
    th[3]: null
    th[4]: null

    Assim, quando uma chave e valor são adicionados, digamos "asd" valor 10, a chave passa por uma função hash para determinar a posição que será inserida. Digamos que h(x) seja a função e que h("asd") = 3. Ao inserir na nossa tabela, ela ficará:

    th[0]: null
    th[1]: null
    th[2]: null
    th[3]: [ ("asd", 10) ]
    th[4]: null

    Para buscar, basta passar a chave "c" para a função h e verificar se ela está presente na posição h(c). Caso sim, retorna o dado. Caso não, retorna nulo. Ou seja, bem mais rápido do que procurar um por um.

    A maior quantidade de memória necessária é relativa a pré-alocação dos vetores, arranjos, lista, ou qualquer outra estrutura, para armazenar os dados e as chaves.
  8. Avatar de fabiocs
    obrigado, por mais esta..
  9. Avatar de fabiocs
    show de bola...
  10. Avatar de fabiocs
    valeu por mais esta aula...