자료구조란, 자료를 가지고 원하는 일을 수행할 수 있게 하는 방법이다. 리스트는 가장 간단한 자료구조이다. 리스트는 기본적으로 리스트 상수이며, 어떤 변수에 할당된다. 정수나 문자열 이외에도 여러 가지 자료를 리스트로 담을 수 있다.
for문과 반복 변수를 사용하면 리스트의 처음부터 끝까지를 돌아볼 수도 있다. for문은 리스트와 자주 쓰이는데, 리스트를 반복하고 리스트 안의 모든 원소를 순서대로 다룰 때 유용하다.
리스트는 위치가 정해져 있고, 순서를 가지고 있다. 리스트 내의 원소는 첫 원소부터 0, 1, 2...의 순서로 매겨진다. print(friends[1])의 코드를 입력하면 2번째(0->1) 원소가 출력된다.
문자열과는 다르게, 리스트는 변형이 가능하다. lotto[2]=28의 코드를 사용해, lotto라는 리스트의 3번째(0->1->2) 원소를 28로 변경할 수 있다.
len 함수를 사용하여 리스트 안의 원소의 개수를 셀 수도 있다. 원소의 종류는 상관없다.
range 함수는 사용자가 원하는 반환 횟수를 매개 변수로 받는데, range 함수를 사용하면 원소를 하나씩 세는 루프보다 더 간단하게 숫자를 세는 루프를 만들 수 있다. print(range(len(friends)))의 코드는 friends 리스트의 원소의 개수를 세어 그 횟수를 range 함수로 받고, print 함수로 출력한다.
두 개의 리스트를 +로 합한다면, 두 리스트가 이어진 새로운 리스트가 만들어진다. 리스트 내의 범위를 지정하여 리스트를 자를 수도 있다. 이때, [1:3]은 원소 1, 원소 2만을 포함한다. 끝 숫자인 3은 포함되지 않는다는 것을 유의해야 한다.
괄호 안의 첫 번째 숫자를 비우면 0부터, 두 번째 숫자를 비우면 끝까지 포함된다.
빈 리스트를 만들려면 대괄호 []를 붙이거나, 생성자 형태인 list()를 사용하여 만들 수 있다. append 메서드를 활용하면 리스트에 값을 추가할 수 있고, in 연산자는 리스트 안에 원소가 있는지 검사하여 참/거짓의 값을 반환한다.
sort 메서드를 활용하면 해당 리스트를 정렬할 수 있고(리스트에는 순서가 존재하고, 정렬을 통해 변형이 가능하기 때문), max 함수와 min 함수를 통해 최대/최솟값을 알 수 있으며, sum 함수를 통해 모든 값의 합을 구할 수도 있다. 함수를 사용하지 않고도 같은 내용의 코드를 작성할 수 있기 때문에, 상황에 맞게 함수를 사용해야 한다.
문자열에 split 함수를 활용하면, 공백을 기준(공백의 수에 상관없이)으로 원소를 나눈 리스트가 만들어진다. split(';')처럼 활용하면 원하는 문자열(여기서는 ;)을 기준으로 나눌 수도 있다.
문자열을 분할하고 원하는 원소만 출력하여, 긴 문자열에서 원하는 부분만 찾을 수도 있다. split을 두 번 사용한다면, 이메일 주소에서 @ 이후의 문자열만 출력하는 것도 가능하다.
세 번째 영상에 나온 내용과 비슷하게, 문자열을 공백 기준으로 나누 후, 원하는 조건이 맞는다면 3번째(0->1->2) 원소를 출력하는 코드를 작성하였다.
리스트의 데이터형, 변수, 실행 결과, 분할(추출)에 대한 문제를 풀었다. 리스트 안에 리스트가 존재할 수 있다는 것과, 원하는 부분만 추출하는 방법을 자세히 알아야 풀 수 있는 문제였던 것 같다.