Trabalhar com listas
Trabalhar com listas
Agora que estabelecemos o que é uma lista, vamos falar sobre as operações que podemos realizar nela. Imagine uma lista como um baralho de cartas. O baralho é a lista e cada carta representa um item.
Foto de Christian Gidlöf
Consulta
Quais consultas podemos fazer na lista? Isso acessa as propriedades existentes.
Número de cartas no baralho? 52.
Número de naipes? 4.
Material? Papel.
Comprimento? 3,5 pol. ou 89 mm.
Largura? 2,5 pol. ou 64 mm.
Ação
Quais ações podemos executar na lista? Isso altera a lista com base em uma determinada operação.
Podemos embaralhar as cartas.
Podemos classificar as cartas por valor.
Podemos classificar as cartas por naipe.
Podemos dividir o baralho.
Podemos dividir o baralho, distribuindo cada uma das mãos da rodada.
É possível selecionar uma carta específica no baralho.
Todas as operações listadas acima têm nós análogos do Dynamo para trabalhar com listas de dados genéricos. As lições abaixo demonstrarão algumas das operações fundamentais que podemos executar nas listas.
Exercício
Operações de lista
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
A imagem abaixo é o gráfico de base no qual estamos desenhando linhas entre dois círculos para representar operações básicas de lista. Vamos explorar como gerenciar dados em uma lista e demonstrar os resultados visuais através das ações da lista abaixo.
Comece com um Bloco de código com um valor de
500;
Conecte-se à entrada x de um nó Point.ByCoordinates.
Conecte o nó da etapa anterior à entrada de origem de um nó Plane.ByOriginNormal.
Usando um nó Circle.ByPlaneRadius, conecte o nó da etapa anterior à entrada do plano.
Usando o Bloco de código, designe um valor de
50;
para o raio. Esse é o primeiro círculo que criaremos.Com um nó Geometry.Translate, movimente o círculo 100 unidades para cima na direção Z.
Com um nó de Bloco de código, defina um intervalo de dez números entre 0 e 1 com esta linha de código:
0..1..#10;
Conecte o bloco de código da etapa anterior à entrada parâmetro de dois nós Curve.PointAtParameter. Conecte Circle.ByPlaneRadius à entrada de curva do nó superior e Geometry.Translate à entrada de curva do nó abaixo dele.
Usando Line.ByStartPointEndPoint, conecte os dois nós Curve.PointAtParameter.
List.Count
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
O nó List.Count é simples: conta o número de valores em uma lista e retorna esse número. Esse nó ganha mais nuances à medida que trabalhamos com listas de listas, mas vamos demonstrar isso nas seções a seguir.
O nó **List.Count ****** retorna o número de linhas no nó Line.ByStartPointEndPoint. Neste caso, o valor é 10, que concorda com o número de pontos criados no nó original do Bloco de código.
List.GetItemAtIndex
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
List.GetItemAtIndex é uma forma fundamental de consultar um item na lista.
Primeiro, clique com o botão direito do mouse no nó Line.ByStartPointEndPoint para desativar sua visualização.
Usando o nó List.GetItemAtIndex, estamos selecionando o índice “0” ou o primeiro item na lista de linhas.
Altere o valor do controle deslizante entre 0 e 9 para selecionar outro item usando List.GetItemAtIndex.
List.Reverse
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
List.Reverse inverte a ordem de todos os itens em uma lista.
Para visualizar corretamente a lista invertida de linhas, crie mais linhas alterando o Bloco de código para
0..1..#50;
Duplique o nó Line.ByStartPointEndPoint, insira um nó List.Reverse entre Curve.PointAtParameter e o segundo Line.ByStartPointEndPoint
Use os nós Watch3D para visualizar dois resultados diferentes. O primeiro mostra o resultado sem uma lista invertida. As linhas se conectam verticalmente aos pontos adjacentes. A lista invertida, no entanto, conectará todos os pontos à ordem oposta na outra lista.
List.ShiftIndices
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
List.ShiftIndices é uma boa ferramenta para criar padrões de torções ou helicoidais, ou qualquer outra manipulação de dados semelhante. Esse nó altera os itens em uma lista por um determinado número de índices.
No mesmo processo que a lista inversa, insira um List.ShiftIndices no Curve.PointAtParameter e Line.ByStartPointEndPoint.
Usando um Bloco de código, foi designado o valor de “1” para mudar a lista em um índice.
Observe que a alteração é sutil, mas todas as linhas no nó inferior Watch3D mudaram um índice ao se conectarem ao outro conjunto de pontos.
Se o Bloco de código for alterado para um valor maior, “30”, por exemplo, perceberemos uma diferença significativa nas linhas diagonais. A mudança está funcionando como a íris da câmera nesse caso, criando uma torção na forma cilíndrica original.
List.FilterByBooleanMask
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
List.FilterByBooleanMask removerá determinados itens com base em uma lista de booleanos ou valores “true” ou “false”.
Para criar uma lista de valores “true” ou “false”, é necessário um pouco mais de trabalho...
Usando um Bloco de código, defina uma expressão com a sintaxe:
0..List.Count(list);
. Conecte o nó Curve.PointAtParameter à entrada lista. Vamos abordar mais essa configuração no capítulo do bloco de código, mas a linha de código nesse caso fornece uma lista que representa cada índice do nó Curve.PointAtParameter.Usando um nó %** (módulo)**, conecte a saída do bloco de código à entrada x e um valor de 4 à entrada y. Isso vai gerar o resto ao dividir a lista de índices por 4. O módulo é um nó muito útil para a criação do padrão. Todos os valores serão lidos como os possíveis restos de 4: 0, 1, 2, 3.
No nó %** (módulo)**, sabemos que um valor de 0 significa que o índice é divisível por 4 (0, 4, 8 etc...). Usando um nó ==, podemos testar a divisibilidade com um valor de “0”.
O nó Watch revela apenas isso: temos um padrão true/false com a indicação: true,false,false,false....
Usando esse padrão true/false, conecte-se à entrada de máscara dos dois nós List.FilterByBooleanMask.
Conecte o nó Curve.PointAtParameter a cada entrada da lista do List.FilterByBooleanMask.
A saída de Filter.ByBooleanMask é “in” e “out”. “In” representa valores que tinham um valor de máscara “true”, enquanto “out” representa valores que tinham um valor “false”. Conectando as saídas “in” às entradas startPoint e endPoint de um nó Line.ByStartPointEndPoint, criamos uma lista de linhas filtrada.
O nó Watch3D revela que temos menos linhas do que pontos. Selecionamos somente 25% dos nós filtrando somente os valores true.
Last updated