개발 코딩 정보 공유/코드와트 코딩강의

코딩강의 5화 - flutter dart 앱개발 리스트와 맵 with gpt

코드와트 2025. 3. 12. 11:40
반응형

 

 

 

 

 

 

안녕하세요. 코드와트 입니다.

이번에는 리스트와 맵에 대해서 배워보겠습니다.

코딩 개발하면서 리스트은 가장 많이 사용하기 때문에 꼭 알아두셔야 합니다.

 

리스트

리스트는 말그대로 목록형태로 데이터를 표시하기 위한 저장형태를 의미합니다.

 

자료형(Data Type)이란?

데이터 저장을 위한 구조나 형태를 말합니다. 사실은 우리가 앞에서 쓰고 있던 int, double, String 또한 자료형의 한 종류였습니다.
마찬가지로 리스트 또한 목록 형태의 데이터 저장을 위한 타입이구나. 생각하시면 됩니다.

 

목록이란 뭔가요?

목록을 만들기 위해서는 일정한 순서를 가지는 데이터가 필요합니다.

  • 도서관에서 대여한 책 목록
  • 어제 과일가게에서 구매한 과일목록
  • 지난번 중간고사 성적목록
  • 이번달 카드결재 목록

등등 수없이 많은 데이터를 목록으로 만들수 있습니다. 어렵지 않죠?

이와 같은 열거된 나열된 형식의 데이터들을 코드 에서는 리스트(List) 라고 부릅니다.

 

 

 

리스트는 말그대로 목록 형태의 정보(데이터)를 담기위해 존재합니다. 긴말할것 없이 만들어보죠.

현실세계의 책장을 리스트로 만들어볼께요.

 

var bookshelf = ['삼국지', '해리포터', '영웅문', '반지의제왕'];

 

제가 좋아하는 무협, 판타지 서적이 가득찬 책장이 완성되었습니다. 이 책장에는 순서가 있습니다.

왼쪽에서부터 0번 부터 시작해서 3번까지 번호가 매겨져 있죠. 보이지 않지만 이와 같은 번호를 인덱스 라고 부릅니다.

코드에서 인덱스는 기본적으로 0부터 시작한다고 생각하면 됩니다. 그럼 이 책장에서 책을 꺼내볼까요?

 

var book = bookshelf[0];
print(book); //삼국지

 

 

🙋‍♀️ "리스트가 목록이고… 목록형태의 데이터를 활용하기 위해 쓴다? 그리고 꺼낼때는 인덱스를 활용한다??? 너무 헷갈려요."

 

헷갈리는게 당연합니다. gpt를 통해서 자세하게 알아볼께요.

 

 

 

 

 

 

 

우리가 만든 리스트에 데이터를 추가 하거나, 빼거나 할때는 어떻게 해야할까요?

리스트에는 편리한 함수들이 기본적으로 만들어져 있어요.

때문에 추가하기, 삭제하기, 정렬하기 등의 편리한 함수를 그냥 쓰기만 하면 되지요.

자 이제 실제로 코딩해볼께요.

 

 

var bookshelf = ['삼국지', '해리포터', '영웅문', '반지의제왕'];
var book = bookshelf[0];
print(book); //삼국지

 

아까 만든 코드에서 값을 추가 하고 (책) 삭제하는 예제를 만들어볼께요.

 

var bookshelf = ['삼국지', '해리포터', '영웅문', '반지의제왕'];
var book = bookshelf[0];
print(book); //삼국지

bookshelf.add('호빗');
print(bookshelf); //"삼국지", "해리포터", "영웅문", "반지의제왕"

bookshelf.remove('삼국지');
print(bookshelf); //"해리포터", "영웅문", "반지의제왕"

 

어떤가요? 우리가 배운 함수 사용법 기억나시죠?

변수에 . 을 찍고 함수 사용

리스트를 생성(실체를 만들고)하고 bookshelf 라는 변수에 담았습니다.

담는 순간 bookshelf 변수의 타입은 리스트라는 타입으로 정해진 거에요.

그래서 리스트 형태의 변수인 bookshelf 를 통해서 . 을 찍고 add, remove 와 같은 함수를 사용할 수 있는것이죠.

 

하나 더 해볼께요. 이번에는 지난번 반복문 배울때 잠깐 배웠던 for in과 for each 라는 반복문을 사용해볼께요.

목록의 내용을 간단하게 순회 할때 사용하면 편리합니다.

 

var bookshelf = ['삼국지', '해리포터', '영웅문', '반지의제왕'];
for(var book in bookshelf){
	print(book);
}

 

 

for문 작성보다 정말 간단하게 반복문을 작성할수가 있습니다.

반복하면서 var book 이라는 변수에 책을 하나씩 담고 그걸 출력하는 예제에요. 하나더 해봅시다.

 

var bookshelf = ['삼국지', '해리포터', '영웅문', '반지의제왕'];
bookshelf.forEach((book){
	print(book);	
});

 

 

이번에는 forEach 라고 하는 함수를 사용했는데요.

구문이 조금 특이합니다만 우선 이렇게 사용할수도 있구나 하고 알아둡시다.

뒤에서 더 자세히 알아볼께요.


 

맵(딕셔너리)

우리는 일상에서 모르는 단어가 나오면 뜻을 찾아보기 위해 검색을 하고 사전을 찾아봅니다.

코딩이라는 단어를 찾아볼까요?

 

 

코딩이라는 키워드로 → 뜻이라는 데이터를 찾았습니다. 하나더 해보겠습니다.

 

 

 

 

Develop 이라는 단어(키워드)로 성장하다, 개발하다 등의 데이터를 찾아냈습니다.

이러한 방식은 코딩에서 키(key)와 값(value)이라는 개념으로 연결되어있습니다.

coding이라는 키 값과 value 라는 데이터(우리가 찾는 정보) 를 연결해주는것이죠.

이와 같은 방식의 데이터 저장형식을 맵이라고 불러요. Map은 지도의 의미 보다는 Mapping 즉 값과 값의 연결의 의미로 알고있으면 되요. 또는 다른 언어에서는 딕셔너리, 사전 그 자체의 의미로 불리웁니다.

 

🙋🏻‍♂️ "잘 모르겠는데요… 키 밸류? …. 맵이요?"

 

설명만으로는 이해가 어려운게 당연하구요.

gpt 조교를 통해 자세하게 알아볼께요.

 

 

 

 

 

 

 

일단 실행해봅시다. 책에 대한 정보가 담긴 사전을 만들어본다고 생각할께요.

책이름을 키워드로 넣으면 그 책에 대한 정보를 가져올수 있도록 하는거죠.

 

var bookInfo = {
'해리포터':'해리포터는...', 
'반지의제왕':'반지의제왕은...', 
'호빗':'호빗은...', 
'삼국지': '삼국지는...',
}

print(bookInfo['해리포터']);

 

 

이와 같이 책정보가 담긴 맵이라는 데이터구조에서 내가 원하는 키워드 즉 해리포터라는 키워드로 그 책에 해당하는 정보를 가져왔습니다.

{ 중괄호 열고 닫고 } 로 만들면 되고 그안에 데이터는 key : value 라는 쌍으로 이루어져 있습니다.

바로 이부분이죠.

'해리포터':'해리포터는...'

 

 

🙋‍♀️ "쌤 ‘ ’ 은 우리 문자를 사용할때 썼던거 같은데 이것도 문자인가요?"

 

나이스! 아주 좋은 질문입니다. 문자 형태가 맞아요. ‘해리포터’ 라는 키워드도 문자이고 ‘내용’ 또한 문자가 맞아요.

그럼 숫자로도 할수 있나요? 맞아요. 숫자또한 키와 밸류로 사용할수 있습니다.

책이름의 키워드로 해당 책이 몇권 팔렸는지 확인 해볼께요.

 

main(){
  var bookSell = {
    '해리포터': 10,
    '반지의제왕' : 20,
    '삼국지' : 30
  };
  
  print(bookSell['삼국지']);

  var totalSum = bookSell['삼국지']! + bookSell['반지의제왕']! + bookSell['해리포터']!;
  print(totalSum);
  
}

 

이와 같이 숫자로 값을 표현할수 있고 숫자데이터를 합계를 내서 출력해봤습니다.

이번에는 키를 숫자로 할수 있을까요?

 

var bookInfoMap = {
    101: '해리포터',
    102: '반지의제왕',
    103: '삼국지'
  };
print(bookInfoMap[101]);
print(bookInfoMap[102]);
print(bookInfoMap[103]);

 

이와 같이 책 넘버가 있고 그 넘버로 책을 찾고 싶다고 했을때 이런식으로 대입하면 되죠.

데이터를 추가하거나 삭제하는것도 쉽습니다.

 

var bookInfoMap = {
    101: '해리포터',
    102: '반지의제왕',
    103: '삼국지'
  };

bookInfoMap[104] = '호빗'
print(bookInfoMap);

 

 

bookInfoMap이라는 변수명으로 [ 괄호 열고 새로운 키값 괄호닫고 ] = ‘호빗’이라는 새로운 밸류 즉 데이터를 대입해주면 됩니다. 어렵지 않죠? 101 의 데이터를 변경하고 싶다면? 그것도 쉽습니다. 그냥 새로운 데이터를 대입하면 되죠.

 

bookInfoMap[101] = '영웅문'

 

삭제도 쉽습니다.

삭제하는 함수인 remove 를 사용해서 지우고 싶은 키값을 넣어주기만 하면 끝이죠.

user.remove(101);

 


마무리

어떤가요? 생각보다 쉽게 리스트와 맵에 대해서 배워보았는데요. 코딩하면서 필수적으로 쓰이는 자료형이니 꼭 익혀두시는게 좋겠습니다.

 

 

 

 

 

 

 

 

 

 

 

반응형