.generate 

주어진 길이만큼 리스트를 생성하고, 각 요소에 대해 반복적인 패턴의 값을 할당하는 데 사용한다.

 

List.generate() 문법

List.generate(length, (index) => expression);

 

length - 생성할 리스트의 길이

index - 인덱스. 0부터 시작함. (인덱스 사용하지 않는 경우 _ )

expression - 각 인덱스에 들어갈 값. 동일값 or 계산식

 

장점

반복문 대신 함수로 깔끔하게 리스트 생성 가능

반복적인 패턴이나 계산식을 사용하는 리스트를 생성 가능

 

예시

  • 0~9까지의 숫자 리스트 만들기
List<int> numbers = List.generate(10, (i) => i);  
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

 

 

 

.filled

주어진 길이만큼 리스트를 생성하고, 모든 요소에 같은 값을 할당함

 

List.filled 문법

List.filled(length, E fill, {bool growable = false})

 

length - 생성할 리스트의 길이

fill - 각 요소에 채울 값

growable - 기본값 false. true로 설정하면 리스트 크기 변경 가능

 

장점

같은 값을 채운 리스트를 쉽게 생성할 수 있음.

리스트를 만들고 초기값을 부여할 때 유용함

 

예시

  • 기본 int 리스트 만들기
List<int> zeros = List.filled(1000, 0);

 

1000개나 되는 리스트의 초기값을 일일히 지정해주지 않고 함수로 표현할 수 있다.

 

 

 

.generate, .filled 동시 사용 예시

  • 빈 2차원 리스트 만들기

https://leetcode.com/problems/find-winner-on-a-tic-tac-toe-game/?envType=study-plan-v2&envId=programming-skills

// 3x3 빈 배열 보드 초기화
  List<List<String>> board = List.generate(3, (_) => List.filled(3,''));

// 리트코드 1275번 문제

 

// .filled 를 사용해 [' ', ' ', ' '] 생성

// .generate 를 사용해 [[' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' ']] 생성. 즉, 빈 3 x 3 보드 생성

 

+ Recent posts