Ir para conteúdo
Fórum Script Brasil
  • 0

Listas


Guest Candahar

Pergunta

Guest Candahar

Gostaria de saber se existe algum meio de criar listas em python com um tamanho já pré-estabelecido, ou seja, já alocar a memória antes mesmo de colocar algo na lista.

Esse problema surgiu depois que eu tava precisando criar uma função que multiplica duas matrizes n x n.

Em java, pelo menos, bastava eu criar uma matriz

double AB[][] = new double[10][10]

Mas em python, como eu devo fazer?

Fiz esse código meio forçado( na minha opinião ), em python:

AB = [ [0 for i in range( len( A[0] ) ) ] for i in range( len( B ) ) ]
for i in range( len( B ) ):
   for j in range( len( A[0] ) ):
       for k in range( len( B ) ):
           AB[i][j] += A[i][k] * B[k][j]

Alguém poderia dar alguma sugestão?

Muito obrigado!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Java é fortemente tipada, então se você criar ou vetor ou matriz de doubles os mesmos serão inicializados para 0. É simples preencher o vetor ou matriz porque já sabe-se o tipo definido. O mesmo não ocorre para objetos (String, por exemplo), onde deixam-se as lacunas preenchidas com null até se criar devidamente o objeto. Listas em Python podem guardar quaisquer objetos e são criadas dinamicamente, por isso não faz muito sentido definir um tamanho nem querer que eles sejam inicializados automaticamente. Entretanto, você pode fazer algo assim:

lista = [0]*10
Ou:
lista = list([0]*10)

Com isso você terá uma lista com 10 zeros. Seria essa a idéia?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Eu não vejo que seja tão necessário você estabelecer o tamanho da matriz previamente, pois você terá controle sobre o fluxo do programa para fazer a matrix ter exatamente o tamanho certo.

Caso precise um tamanho definido faça uma verificação se a matriz tem as posições desejadas.

E isso possibilita vantagens, pois se for necessário aumentar a lista voce pode usar:

lista1=range(0,10)
lista1.append(11)
lista2=range(3,13)
lista2.append(1)
...
lista11=range(20,30)
lista11.append(28)
listas=[lista1,lista2,...,lista10)
listas.append(lista11)

biggrin.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,8k
×
×
  • Criar Novo...