Python 리스트(List) 공부
리스트 자료형
데이터들의 목록으로 많은 데이터들을 다룰 때 편리하다.
기본적인 사용 방법은 '리스트명(변수) = [요소 1, 요소 2, 요소 3,... , 요소 n]' 같이 사용한다.
리스트는 [ ](대괄호)를 이용한다.
1. 리스트 만들기
a = [] # 요소가 없는 빈 리스트
b = [1, 2, 3] # 요소가 정수
c = ["A", "B", "C"] # 문자열
d = ["A", "B", 1, 2] # 혼합
e = [1, "A", [2, "B"]] # 혼합 + 리스트 안에 또 다른 리스트
print(a)
print(b)
print(c)
print(d)
print(e)
#출력
[]
[1, 2, 3]
['A', 'B', 'C']
['A', 'B', 1, 2]
[1, 'A', [2, 'B']]
2. 인덱싱, 슬라이싱
인덱싱과 슬라이싱은 여러 요소들이 하나로 합쳐진 형태인 경우에 모두 사용하다.
따라서, 문자열이란 하나하나 문자들이 순서대로 나열된 형태이고, 리스트란 하나하나 요소들이 순서대로 저장되는 형태이다.
my_list = ["이몽룡", "홍길동", "임꺽정"]
print(my_list)
print(my_list[0] + "님")
# 리스트의 첫 번째 요소가 '문자열'이기 때문에
# 인덱싱해서 가져온 값은 그대로 '문자열'이다.
#출력
['이몽룡', '홍길동', '임꺽정']
이몽룡님
1) 인덱싱 사용 비교(문자열 vs 리스트)
문자열 : 모든 요소가 문자이기 때문에 인덱싱하면 '문자'
리스트 : 각 요소의 형태에 따라 인덱싱 결과가 다르다.
2) 이중 리스트 인덱싱 (리스트 안에 또 다른 리스트 요소를 가지는 경우)
my_list = ["김철수", "홍길동",["임꺽정", "이몽룡"]]
print(my_list[2]) # 리스트
print(my_list[2][1]) # my_list의 3번째 요소인 리스트에서 2번째 요소 '이몽룡' 인덱싱
print(my_list[2][1][1])
# 인덱스 범위 초과, 음수 사용 이런 인덱싱 개념은 동일
#출력
['임꺽정', '이몽룡']
이몽룡
몽
a = [2, "2"]
print(a[0] * 2)
print(a[1] * 2)
#출력
4
22 #문자 '2'가 2개 나열된 형태
3) 슬라이싱
리스트의 요소가 하나 밖에 없어도 슬라이싱의 결과는 무조건 '리스트'이다.
a = [2, "2"]
print(a[0:2])
print(a[0:1])
#결과
[2, '2']
[2]
4) 리스트 연산
a = [1, 2, 3]
b = [4, 5, 6]
print("리스트 덧셈 :", a + b) # 연결
print("리스트 곱셈 :", a * 2) # 반복
c = a + b
print(c) #새로운 리스트가 만들어진다.
#결과
리스트 덧셈 : [1, 2, 3, 4, 5, 6]
리스트 곱셈 : [1, 2, 3, 1, 2, 3]
[1, 2, 3, 4, 5, 6]
5) 리스트 수정(변경, 삭제)
a = [1, 2, 3, 4, 5, 6]
a[2] = -1
print("변경 후 :", a)
#결과
변경 후 : [1, 2, -1, 4, 5, 6]
# 연속된 범위의 값을 수정
a[0:2] = [0]
print("변경 후 :", a)
a[0:2] = [6, 7, 8] # 하나씩 들어간다.
print("변경 후 :", a)
만약, a[0:2] = 0 --> 오류, 슬라이싱의 결과는 '리스트' 이기 때문이다.
#결과
변경 후 : [0, -1, 4, 5, 6]
변경 후 : [6, 7, 8, 4, 5, 6]
리스트 요소 삭제는 del(a[0]), del(a[0:2]) 같이 del()함수를 이용해 요소를 삭제한다.
6) 리스트 관련 함수
① append(value) : 리스트 가장 뒤에 value(요소)를 추가
문자열은 수정이 불가능하기 때문에 새로운 문자열을 만들어내는 함수이다. 즉, 아래 예제에서 a라는 리스트 자체가 변경된다. append함수는 하나의 요소만 추가할 수 있다.
a = [1, 2, 3]
a.append(4)
print("변경 후 :", a)
#결과
[1, 2, 3, 4]
② sort() : 리스트 정렬하기 (숫자, 알파벳 등)
a = [2, 3, 1, 4]
print("변경 후 :", a)
a.sort() # 기본 오름차순
print("변경 후 :", a)
a.sort(reverse = True) # 내림차순
print("변경 후 :", a)
#결과
변경 후 : [2, 3, 1, 4]
변경 후 : [1, 2, 3, 4]
변경 후 : [4, 3, 2, 1]
③ reverse() : 리스트 뒤집기 (정렬x, 현재 요소를 그대로 뒤집는다.)
a = [1, 3, 2, 4]
a.reverse()
print("변경 후 :", a)
#결과
변경 후 : [4, 2, 3, 1]
④ index(value) : 리스트에서 value를 찾고, 그 위치를 반환
만약 찾는 값이 없다면, 오류가 발생한다.
a = [1, 2, 3]
print("a에서 2의 위치 :", a.index(2))
#결과
a에서 2의 위치 : 1
⑤ insert(index, value) : 지정한 위치(index)에 값(value) 삽입
append함수와 차이는 append함수는 맨 뒤에 값을 추가하고, insert함수는 지정한 위치에 값을 추가한다.
⑥ remove(value) : 리스트에서 '처음' 찾은 값(value) 제거
만약 없는 값을 제거하려고 하면 오류가 발생한다.
a = [1, 2, 3, 1]
a.remove(1)
print("변경 후 :", a)
#결과
변경 후 : [2, 3, 1]
또 다른 값을 제거하는 함수로 del() 이 있다. remove함수와 차이는 다음과 같다.
del(a[0]) --> 첫 번째 요소를 제거(0은 순서)
a.remove(0) --> 정수 0을 찾아서 제거 (0은 값)
⑦ count(value) : 리스트에 존재하는 value의 개수를 반환
a = [1, 2, 3, 1, 1, 1, 2, 3, 2, 1, 3, 1, 3, 2]
print("a에서 2의 개수 :", a.count(2))
print()
#결과
a에서 2의 개수 : 4
⑧ pop(index) : 리스트에서 (index) 번째 값을 '뽑아낸다'
뽑아낸 값을 '반환'해주고 해당된 인덱스의 값은 제거된다.
a = [1, 2, 3, 1]
print(a.pop(1))
print("변경 후 :", a)
print(a.pop()) # index를 사용하지 않으면 기본 '맨 뒤' 값 선택
print("변경 후 :", a)
#결과
2
변경 후 : [1, 3, 1]
1
변경 후 : [1, 3]
⑨ len() : 요소의 개수를 구하는 함수
a = [1, 2, 3, 4]
b = "1234"
c = 1234
print(len(a))
print(len(b))
print(len(c)) # 오류
#결과
4
4
오류
위의 예에서 a, b는 각각 리스트, 문자열로 어떤 단일 값이 여러 개 존재하는 경우이다. 하지만 c는 단 하나의 숫자이기 때문에 개수를 구할 수 없다. len함수는 값이 여러개 존재하는 자료형만 사용할 수 있다.
⑩ copy() : 모든 값들을 '복제'하여 새로운 리스트 생성
a = [1, 2, 3, 4]
b = a.copy()
c = a
print("기존 a :", a)
print("복제 b :", b)
print("대입 c :", c)
#결과
기존 a : [1, 2, 3, 4]
복제 b : [1, 2, 3, 4]
대입 c : [1, 2, 3, 4]
⑪ clear() : 리스트의 모든 요소 제거
a.clear()
print(a) # 요소만 제거, 빈 리스트가 된다.
#결과
[]
⑫ join() : 리스트의 요소들이 모두 '문자열'인 경우에 '하나의 문자열'로 만들 수 있다.
my_list = ["대", "한", "민", "국"]
print("".join(my_list))
#결과
대한민국
'파이썬' 카테고리의 다른 글
[Python] sorted() 함수 (0) | 2020.07.21 |
---|---|
[Python] 문자열 다루기(2) - 문자열 함수 (0) | 2020.05.05 |
[Python] 문자열 다루기(1) - 연산, 인덱싱, 슬라이싱, 포매팅 (0) | 2020.05.05 |
Python 프로그래밍 기초 문법 - 자료형(1) (0) | 2020.04.11 |
Python 프로그래밍 기초 문법 - 주석, 문자열, 변수 (0) | 2020.03.06 |