다이나모에서 리스트 분할하기: List.Chop 및 List.Slice 노드 사용법

2024년 10월 17일

다이나모에서 리스트(List)를 적절하게 분할하는 것은 데이터 처리 및 구조화에 중요한 작업입니다. 이번 글에서는 리스트를 하위 목록으로 나누는 데 유용한 두 가지 노드, List.ChopList.Slice에 대해 다루겠습니다. 이 노드들을 활용하면 다양한 패턴으로 리스트를 분할하고, 원하는 대로 데이터를 처리할 수 있습니다.

1. List.Chop

List.Chop 노드는 입력된 리스트를 Lengths로 정의된 길이만큼 하위 목록으로 나누어 줍니다. Lengths에 지정된 값을 반복해서 적용하여 리스트 전체가 분할될 때까지 작업을 수행합니다. 이 노드를 사용하면 리스트를 일정한 크기의 그룹으로 나누거나, 그룹 크기를 반복하여 다양한 길이로 분할할 수 있습니다.

사용 예시

List.Chop
이미지 1. List.Chop ⓒ디지털디자인포럼
  • 리스트 ["A", ..., "J"]Length = 2로 나누면 결과는 [ ["A","B"], ["C","D"], ["E","F"], ["G","H"], ["I","J"] 와 같습니다.
  • 리스트 ["A", ..., "J"]Lengths = [1, 3, 2]로 나누면 [ ["A"], ["B","C","D"], ["E","F"], ["G","H"], ["I","J"] ]의 구조가 됩니다.
    (1개, 3개. 2개로 나눈 후 데이터가 남으면 마지막으로 남은 길이로 나머지 데이터를 나눔)

이 방법을 사용하면 원하는 크기로 리스트를 자유롭게 나눌 수 있습니다.

실습: List.Chop으로 Point 분할하기

List.Chop
이미지 2. List.Chop 실습 ⓒ디지털디자인포럼
  1. Line.ByStartPointEndPoint 노드를 사용하여 선(Line)을 생성합니다. 생성된 선의 미리보기는 꺼둡니다.
  2. Curve.PointAtParameter 노드를 사용하여 선 위에 10개의 분할된 포인트(Point)를 만듭니다. 이때 선의 시작점은 0, 끝점은 1로 설정됩니다.
  3. List.Chop을 사용하여 10개의 포인트를 길이 2로 분할합니다.
  4. Line.ByBestFitThroughPoints 노드를 사용하여 분할된 포인트들을 연결해 새로운 선(Line)을 만듭니다.

2. List.Slice

List.Slice 노드는 리스트의 시작 Index, 종료 Index, 그리고 Step 크기에 따라 단일 하위 목록을 반환합니다. 이 노드는 원하는 범위 내에서 리스트의 특정 부분을 추출할 때 매우 유용합니다.

사용 예시
List.Slice
이미지 3. List.Slice 실습 ⓒ디지털디자인포럼
  • 리스트 ["A", ... , "Z"]에서 시작 Index = 10, 종료 Index = 20로 지정하면 결과는 ["K", "L", "M", "N", "O", "P", "Q", "R", "S", "T"]입니다.
  • Step 값을 설정하지 않으면 기본적으로 1이 적용되어 모든 항목을 차례로 반환하지만, Step 값을 2로 설정하면 ["K", "M", "O", "Q", "S"]과 같이 2개씩 건너뛰는 값을 반환합니다.

3. List.Chop과 List.Slice의 차이점

  • List.Chop은 리스트를 여러 개의 하위 목록으로 나누어 각각의 그룹을 반환합니다.
  • List.Slice는 특정 범위 내에서 한 번에 하나의 하위 목록만 반환하며, 시작과 종료 Index 및 Step을 사용하여 범위를 정의할 수 있습니다.

이 두 노드는 서로 다른 방식으로 리스트를 처리하지만, 복잡한 데이터 구조를 관리할 때 모두 유용하게 사용될 수 있습니다.

4. 마무리

리스트 분할은 다이나모에서 다양한 데이터 처리를 위한 기본 작업 중 하나입니다. List.ChopList.Slice는 이러한 리스트 분할을 간편하게 수행할 수 있는 노드입니다. 이 두 노드를 잘 활용하면 효율적으로 데이터를 분할하고, 원하는 형태로 구조화할 수 있습니다. 다음 프로젝트에서 리스트 분할 작업이 필요하다면 이 두 노드를 활용해 보세요!


답글 남기기


관련 포스트

  • 다이나모에서 구성평면과 벡터 크기 및 방향 확인하는 방법

  • Curve 지오메트리 등분하기

  • 다이나모에서 데이터 타입(Data Type) 이해하기

  • 다이나모에서 특정 Index의 Item 추출 또는 특정 Item의 Index 추출하기

  • Dynamo에서 True값과 False값 구분하기: List.FilterByBoolMask 사용법

  • Dynamo에서 유형 파라미터 vs 인스턴스 파라미터: 차이점과 사용법

  • Dynamo에서 n번째 항까지의 총합 구하기: List.Scan 사용법

  • 리스트에서 첫 번째 및 마지막 아이템 추출 방법과 제외한 나머지 리스트 얻기