Python의 자료구조 형태중 하나로 list는 값을 나열하는것이다.
또한 list 는 시퀀스 타입들중 하나이기도 하다.
데이터를 배열 및 순서대로 관리 할 수 있는다는 것을 의미한다.
- 시퀀스 자료형(순서를 정함)
- string, list, tuple- 시퀀스 자료형이 아닌것(순서를 정하지 않음)
- set, dict

하지만 위에 처럼 모든 값을 변수로 나열하면 코드도 너무 길어지고 사용하기도 불편할 것이며 변수가 늘어나면 늘어날수록 더욱더 길어지게 될 것이다.

이러한 경우에 list를 사용하면 여러 값들을 순차열 적으로 저장할 수 있다.
List는 위와 같이 [ ], 즉 대괄호 안에 원하는 값들을 나열 하는 식으로 생성할 수 있으며, 각각의 값들은 쉼표를 사용해서 구분한다.
List 에 저장되어 있는 값은 "element" 라고 한다.
또한 List는 값들이 순차적으로 저장이 된다. 즉 list에는 순서(ordering)가 존재 한다는 의미이다.
korea_provinces의 경우, "강원도"가 가장 첫번째 값이고 "경기도"가 두번째 이며 "충청도"가 마지막 이다.
List에 저장되어 있는 값들 중 원하는 값을 읽어들일려면 해당 값의 순서를 통해서 읽어들이면 된다. 여기서 중요한점은 list에서 순서는 0번 부터 시작한다는 점이다. 즉 "강원도" 는 0번이고 "경기도"는 1번 이다. 이러한 순서를 list의 "index" 라고 하는데 index는 0부터 시작하고 index의 마지막은 n-1 (n은 list의 총 길이) 이다.

그리고 List는 여러 string 이외에도 숫자, boolean 값 등 모든 type의 값을 저장 할 수 있으며 서로 다른 type의 값들을 저장하는것도 가능하다.

리스트에 새로운 element를 추가 하기 위해서는 일반적으로 append 라는 함수를 사용하면 됩니다.
영어 단어 "append" 는 "덧붙이다" 라는 뜻을 가지고 있습니다. 그 뜻대로 element를 리스트에 "덧붙인다"는 기능을 합니다.

list 에서 append를 사용하는 방법은 위와 같다.
여기서 중요한점은, "추가한다" 라는 뜻의 "add"를 사용하지 않고 "덧붙인다" 라는 뜻의 append를 사용했다는 점입니다.
전 시간에 list는 순차적으로 element를 저장한다는 것을 배웠습니다. 즉, element가 저장되어 있는 순서가 있다는 점입니다.
그럼으로, 새로운 element를 list에 추가 할때는 마지막 element의 다음 칸에 "덧붙이게" 되는 것입니다.

추가하고자 하는 element가 한개 이상일때는 append 대신에 + 또는 extend함수를 사용할 수 있습니다.

list에서 + 를 사용하여 element들을 추가 할때는 대괄호 ([]) 를 사용하여 리스트의 형태로 만든후 추가해야 합니다.
즉, + 는 list와 list를 합하여 줍니다.
여기서 조심해야 할 점은 + 를 사용하여 list 들을 합한 값을 다시 저장하고자 하는 변수에 지정해줘야 한다는 점입니다.

위의 형태가 되어야 한다는 점 입니다. 이 이유는, + 를 사용하면 기존의 list가 수정되지 않고 기존의 list와 다른 새로운 list가 생성되기 때문입니다.
그럼으로 새로 생성된 list를 변수에 다시 지정해 주지 않으면 기존 list들은 수정이 되지 않은 상태로 남아있게 됩니다.

Append 와 + 이 외에 insert를 사용해서 list에 새로운 element를 추가 할 수 있습니다.
다만 insert는 append 와 + 와는 다르게 원하는 위치에 element를 삽입 할 수 있습니다.

위와 같은 list를 예로 들면 cities 에 "제주특별자치도 제주시" 를 "서울특별시" 다음에 삽입 하고자 하면 다음과 같이 할 수 있습니다.

insert를 사용하는 문법은 앞서 본 append와 비슷하며 차이점은 insert는 추가하고 자 하는 element 외에 element를 삽입 하고자 하는 위치(index)도 지정해줘야 합니다.

새로운 element를 추가하는 거 외에도 기존의 element의 값을 수정 할 수 있습니다.
기존 element의 값을 수정하기 위해서는 수정하고자 하는 element의 index 값을 통해 list에서 element를 선택한 후 새로운 값을 지정해 주면 됩니다.

위의 코드를 실행하면 cities 의 3번째 (index는 0부터 시작함으로) element인 인천광역시 가 경기도 성남시로 바뀌게 됩니다.

remove메소드를 사용하면 데이터를 삭제할수 있다.

remove메소드는 insert메소드와는 다르게 Index번호를 사용하는 것이 아니라 삭제하고자 하는 값을 입력해서 삭제한다. 만약 삭제하고자 하는 값이 리스트에 존재하지 않는 값이면 ValueError가 발생하게 된다. 또한 리스트 안에 있는 데이터중 중복된 데이터를 제거할때에 remove메소드를 사용하면 Index번호가 작은 값부터 삭제되며, 한꺼번에 삭제되지는 않는다.
reverse메소드를 이용하여 리스트의 순서를 역순으로 바꿀 수 있다.

Python은 list의 데이터를 순서대로 정의할 수 있도록 sorted라는 내장 함수를 제공한다.

5개의 숫자를 순서없이 리스트 안에 정의하고 sorted함수를 사용하여 정렬하면 위와 같은 결과가 나온다. sorted함수를 사용하면 기존의 리스트에 있는 데이터 정렬에는 영향을 끼치지 않으며, sorted 함수로 인해 기존의 리스트에 있는 데이터가 일시적으로 정렬되어 출력된다.

하지만 기존의 리스트의 정렬을 아예 바꾸고 싶을 경우에는 sort라는 클래스 메소드를 사용하면 된다.