[파이썬] 리스트(List)1_정의/인덱스(index)/[ : ]/range()
기말고사 점수가 아래와 같다고 해보자.
기말고사 평균을 구하고 싶다면 어떻게 할 것인가?
계산기를 사용한다고 하면, 계산기에 75, 90, 100, 80을 차례로 더하기(+)한 뒤에 과목 수(4)로 나누기(/)를 할 것이다.
엑셀을 사용한다고 하면, 75, 90, 100, 80을 포함한 셀을 선택한 뒤에 average 함수를 사용할 것이다.
파이썬을 이용한다면?

먼저, 기말고사 점수(Finalexam)라는 변수를 만든 뒤, 거기에 점수들을 입력한다.
방법은 아래와 같다.
Finalexam= [75, 90, 100, 80]
이것이 리스트(List) 이다.

이게 무슨 소리야
즉, 기말고사점수(Finalexam)라는 주머니 안에 75, 90, 100, 80라는 요소들이 모두 포함되어 있는 것이다.
75도 기말고사 점수 중 하나이고, 90도 기말고사 점수이다. 또 100과 80도 모두 기말고사 점수이다.
이렇게 하나의 변수명 안에 여러 개의 요소가 포함되어 있는 형태가 바로 리스트(List) 이다.
(75, 90, 100, 80 각각을 '요소(element)'라고 한다.)
정리하면,
파이썬에서 리스트를 만드는 방법은 Finalexam= [75, 90, 100, 80] 와 같이 대괄호[ ] 안에 요소들을 쉼표(,)로 구분해서 입력하면 된다.
리스트는
숫자형 데이터만으로도 만들 수 있고, [ 75, 90, 100, 80 ]
문자형 데이터만으도로 만들 수 있고, [ "국어", "MATHEMATICS", "과학", "사회" ]
숫자형+문자형 데이터를 섞어서 만들 수 있고, [ 75, "미정", 100, "오류정정중" ]
요소 안에 요소를 넣어서 만들 수도 있다. [ 100, "가나다", ["무궁화", 1], ("ABC", "value") ]
(괄호( ) 안에 요소를 넣은 것은 '튜플(tuple)'인데, 리스트와 달리 요소 변경이 안됨)
리스트 안에 요소가 몇 개 있는지, 즉 요소의 길이를 알고싶다면 아래와 같이 확인 가능하다.
인덱스(index)
앞에서 보았듯이, 리스트(List)에는 여러 개의 요소가 나열되어 있다.
이 요소들은 순서에 따라 '자리 번호'가 매겨지는데, 이를 인덱스(index)라고 한다.
list_a=[75, 90, 100, 80] 이라면,
제일 첫 번째 자리에 75
두 번째 자리에 90
세 번째 자리에 100
네 번째 자리에 80
이 들어가 있는 것이다.
이 때 1이 아니라, 0부터 시작함을 잊으면 안된다.
따라서, 첫 번째 자리에 있는 75의 index 는 0 이다.
두 번째 자리에 있는 90의 index는 1
세 번째 자리에 있는 100의 index는 2
네 번째 자리에 있는 80의 index는 3 이다.
만약 왼 쪽이 아니라 오른 쪽부터 센다고 하면 어떻게 될까?
예를 들어, List 제~~일 마지막 요소가 뭔지 궁금하다면?
List 제~~일 마지막에서 두 번째 요소가 뭔지 궁금하다면?
그럴 때는 끝에서부터 -1 로 시작한다.
리스트에 있는 요소를 출력(print)하고 싶다면, 변수명 뒤에 [해당 요소의 인덱스(index)] 를 넣어주면 된다.
변수명[index] 또는 print( 변수명[index] )
만약 list_d=[ 100, "가나다", ["무궁화", 1], ("ABC", "value") ] 일 때, "가나다"의 "가"만 출력하고 싶을 때는?
list_d[1][0]
(문제) list_d 에서 index 2 에 있는 ["무궁화", 1] 에서 "무궁화"의 "무"만 출력하고 싶을 때는?
print(list_d[2][0][0])
만약 인덱스를 모른다면? → .(닷)index 사용
list_e=["가", "나", "다", "라", "마", "바", "사", "아", "자", "차", "카", "타", "파", "하"] 일 때,
요소 "자"의 index가 궁금하다면 어떻게 찾을 수 있을까?
list_f=[1,2,3,4,5,6,7,8,4,1,2,8,2,3,4,9,1,2,1,2,7,5,5,4,4,3,3,2,2,2,1,3] 일 때,
요소 9 의 index = ?
만약 list_f의 index 1 ~ index 17 까지를 구하고 싶다면 어떻게 해야 할까?
list_f[1]
list_f[2]
list_f[3]
...
...
이렇게 하나하나 입력해서 구해야 할까?

안돼~~~
방법은 변수명[시작index : 마지막 index] 이다.
단, 마지막 index 는 포함되지 않는다.
즉, list_f의 index 1 ~ index 17 까지를 구하려면, list_f [ 1:18 ] 을 입력해야 index 1 부터 index 17까지 출력된다.
대괄호 안의 마지막 index는 포함되지 않기 때문이다. (아래 그림 확인)
만약 list_g=[1,2,3,4,5,6,7,8,9,10] 에서 list_g[1:5] 는 어느 값을 가질까? index 1 부터 index 4까지 출력되므로 [2,3,4,5]이다.
(아래 그림 확인)
만약 대괄호 [ ] 안에 시작index 또는 마지막 index를 생략한다면?
맨 앞 또는 맨 끝을 의미한다.
range( ) 함수 : 숫자 생성
range ( ) 함수에 1,101 숫자를 쓰면 1부터 100까지 숫자 생성 (101 포함X)
ex) list(range(1,101)) → list 1~100 생성