인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
기초 자료형(리스트)
- 기본 개념
리스트 자료형은 순서가 있고 중복이 가능하며, 수정 및 삭제를 할 수 있는 유일한 자료형이다.
또한, 리스트 자료형은 데이터를 담는 컨테이너 역할을 하기 때문에 타 언어의 배열과 유사하다.
# 선언 방식 a = [] b = list() # 빈 리스트를 선언하는 방식이다. print(type(a)) print(type(b)) # 두 결과 모두 #<class 'list'>이므로, a와 b의 타입은 리스트이다. c = [70, 75, 80, 85] print(len(c)) # 결과 : 4 # 리스트는 인덱스 번호가 존재하며, 리스트의 인덱스 번호는 0부터 시작한다. # 리스트는 시퀀스형이므로, len( )함수와 슬라이싱과 같은 기능들을 사용할 수 있다. d = [1000.1, 10000, 'Ace', 'Base'] e = [1000, 10000, ['Ace', 'Base', 'Color']] f = [21.42, 'foobar', 3, 4, False, 3.14535] # 이처럼 리스트안에는 다양한 자료형을 함께 담을 수 있다.
- 응용 개념
# 인덱싱(리스트의 인덱스 번호를 활용하여, 원하는 데이터를 가져오는 기능) a = [] b = list() c = [70, 75, 80, 85] d = [1000.1, 10000, 'Ace', 'Base'] e = [1000, 10000, ['Ace', 'Base', 'Color']] f = [21.42, 'foobar', 3, 4, False, 3.14535] print('d - ', type(d), d) # 결과 : d - <class 'list'> [1000.1, 10000, 'Ace', 'Base'] print('d - ', d[1]) # 결과 : d - 10000 # 리스트의 인덱스 번호가 1인 데이터를 가져오라는 의미이다. print('d - ', d[0] + d[1] + d[1]) # 결과 : d - 21000.1 # 리스트의 데이터는 연산이 가능하며, 정수형과 실수형이 연산되는 과정에서 # 자동으로 실수형으로 형 변환을 하여 결과 값을 출력한다. print('d - ', d[-1]) # 결과 : d - Base # 리스트의 인덱스 번호가 음수이면, 리스트의 맨 마지막 데이터가 -1의 인덱스 번호를 가지며 # 뒤에서 부터 앞으로 오면서 -1, -2, -3...의 인덱스 번호가 부여된다. print('e - ', e[-1][1]) # 결과 : e - Base # 리스트 e에서 인덱스 번호가 -1인 데이터는 ['Ace', 'Base']이고, # 해당 리스트 ['Ace', 'Base']에서의 인덱스 번호가 1인 데이터는 Base이므로, # e[-1][1]의 결과 값은 Base가 된다.(중첩된 리스트에 접근하는 방식) # 중첩된 리스트 관련 참고 예시 print('e - ', type(e[-1][1])) # 결과 : e - <class 'str'> # 결과 값은 위와 동일하게 Base이므로, 해당 데이터의 타입은 문자형이다. print('e - ', list(e[-1][1])) # 결과 : e - ['B', 'a', 's', 'e'] # 결과 값이 문자형인 데이터를 리스트로 형 변환 시킬 수 있다. # 리스트 자료형의 슬라이싱 예시 print('d - ', d[0:3]) # 결과 : d - [1000.1, 10000, 'Ace'] # 리스트의 인덱스 번호가 0인 데이터부터 인덱스 번호가 3인 데이터의 # 바로 앞 데이터(인덱스 번호가 2인 데이터)까지 가져오라는 의미이다. print('d - ', d[2:]) # 결과 : d - ['Ace', 'Base'] print('e - ', e[-1][1:3]) # 결과 : e - ['Base', 'Color'] # 중첩 리스트에서 슬라이싱을 하는 방법이다. # 리스트 연산(+ , *) 예시 print('c + d', c + d) # 결과 : c + d [70, 75, 80, 85, 1000.1, 10000, 'Ace', 'Base'] # 두 개의 리스트를 더하면, 첫 번째 리스트의 마지막 부분에 # 두 번째 리스트의 데이터가 삽입된다. # 즉, 두 리스트의 합은 두 리스트를 합치는 것을 의미한다. print('c * 3', c * 3) # 결과 : c * 3 [70, 75, 80, 85, 70, 75, 80, 85, 70, 75, 80, 85] # 리스트에 특정 숫자를 곱하면 해당 리스트의 순서는 유지하면서, # 리스트의 데이터를 숫자의 횟수만큼 반복한다. print("'Test' + c[0]", 'Test' + str(c[0])) # 결과 : 'Test' + c[0] Test70 # 문자열과 숫자형의 연산은 에러를 발생시키기 때문에, # c[0]의 결과 값인 숫자형을 문자형으로 형 변환 시킨 후에 연산을 해야한다. # 리스트 값 비교 예시 print(c == c[:3] + c[3:]) # 결과 : True print(c) print(c[:3] + c[3:]) # 두 결과 모두 [70, 75, 80, 85]로 동일하다. # identity(id) 관련 참고 예시 temp = c print(temp, c) print(id(temp)) # 결과 : 4469585920 print(id(c)) # 결과 : 4469585920 # 위의 결과 처럼 리스트 c와 변수 temp가 동일한 id 값을 가지는 이유는 # 리스트 c와 변수 temp가 동일한 자료형을 가지고 있기 때문이다. # 즉, 파이썬이 내부적으로 동작의 효율성을 고려하여 같은 id값을 공유하는 것이다. # 리스트의 수정 및 삭제 예시 c[0] = 4 print('c - ', c) # 결과 : c - [4, 75, 80, 85] # 리스트 c의 인덱스 번호가 0인 데이터를 4로 수정한 것이다. c[1:2] = ['a', 'b', 'c'] print('c - ', c) # 결과 : c - [4, 'a', 'b', 'c', 80, 85] # 리스트의 데이터를 수정하는 경우에, 만약 새롭게 변경하려는 데이터가 # 리스트 형태일지라도 수정된 결과 값은 리스트 형태가 아닌 일반 문자열 형태로 수정된다. c[1:2] = [['a', 'b', 'c']] print('c - ', c) # 결과 : c - [4, ['a', 'b', 'c'], 'b', 'c', 80, 85] # 만약 새롭게 변경하려는 데이터를 리스트 형태로 넣고자 한다면 # 리스트를 []로 감싼 형태로 데이터를 수정해야 한다.(위의 결과 값과 비교) c[1:2] = ['a', 'b', 'c'] print('c - ', c) # 결과 : c - [4, 'a', 'b', 'c', 80, 85] c[1] = ['a', 'b', 'c'] print('c - ', c) # 결과 : c - [4, ['a', 'b', 'c'], 'b', 'c', 'b', 'c', 80, 85] # 정리하자면, 슬라이싱 기능으로 인덱스 번호의 범위를 정하여 데이터를 수정하는 경우에는 # 해당 데이터가 문자형으로 수정되지만, 일반적인 방법대로 인덱스 번호만 부여해서 # 데이터를 수정하려는 경우에는 해당 데이터가 자신의 자료형을 유지하면서 데이터가 수정된다. c[1:3] = [] print('c - ', c) # 결과 : c - [4, 'c', 'b', 'c', 80, 85] # 슬라이싱 기능으로 인덱스 번호의 범위를 정하여 빈 리스트로 수정하는 경우에는 # 해당 인덱스 범위에 있는 데이터가 삭제된다. del c[2] print('c - ', c) # 결과 : c - [4, 'c', 'c', 80, 85] # 예약어 del을 사용하여, 리스트의 데이터를 삭제할 수도 있다. # 리스트의 함수 활용 예시 a = [5, 2, 3, 1, 4] print('a - ', a) # 결과 : a - [5, 2, 3, 1, 4] a.append(10) print('a - ', a) # 결과 : a - [5, 2, 3, 1, 4, 10] # 리스트의 마지막 부분에 데이터를 추가할 때, append( ) 함수를 사용한다. a.sort() print('a - ', a) # 결과 : a - [1, 2, 3, 4, 5, 10] # 리스트의 데이터를 오름차순으로 정렬할 때, sort( ) 함수를 사용한다. a.reverse() print('a - ', a) # 결과 : a - [10, 5, 4, 3, 2, 1] # 리스트에 들어있는 데이터의 순서를 역으로 바꿀 때, reverse( ) 함수를 사용한다. print('a - ', a.index(3)) # 결과 : a - 3 # 리스트의 인덱스 번호가 n인 데이터를 가져올 때, index( ) 함수를 사용한다. print('a - ', a[3]) # 결과 : a - 3 (index( ) 함수와 동일한 기능) a.insert(2, 7) print('a - ', a) # 결과 : a - [10, 5, 7, 4, 3, 2, 1] # 리스트안에서 원하는 위치에 특정 데이터를 삽입하고자 할 때, insert( ) 함수를 사용한다. # insert( ) 함수의 첫 번째 인자는 인덱스 번호(삽입하고자 하는 위치)를 의미하고, # 두 번째 인자는 삽입하고자 하는 데이터 값을 의미한다. a.remove(10) print('a - ', a) # 결과 : a - [5, 7, 4, 3, 2, 1] # 리스트에서 특정 데이터를 삭제하고자 할 때, remove( ) 함수를 사용한다. # 리스트의 인덱스 번호를 알지 못해도, 지우고자 하는 데이터 값만 알면 # 손쉽게 데이터를 삭제할 수 있다.(del 예약어와 비교) print('a - ', a.pop()) # 결과 : a - 1 # pop( ) 함수를 사용하면 기존 리스트에서 마지막 데이터 값을 가져오는 동시에, # 해당 리스트에서는 가져오는 데이터를 삭제한다. print('a - ', a) # 결과 : a - [5, 7, 4, 3, 2] print('a - ', a.count(4)) # 결과 : a - 1 # 리스트에서 특정 데이터가 몇 개 존재하는지를 카운트 할 때, count( ) 함수를 사용한다. # 만약 특정 데이터가 리스트에 없는 경우에는, 결과 값으로 0을 출력한다. ex = [8, 9] a.extend(ex) print('a -', a) # 결과 : a - [5, 7, 4, 3, 2, 8, 9] # 리스트의 맨 마지막 부분에 특정 데이터(혹은 리스트)를 삽입할 경우, # extend( ) 함수를 사용한다.
'Python' 카테고리의 다른 글
Python - 기초 자료형(딕셔너리) (0) | 2021.10.13 |
---|---|
Python - 기초 자료형(튜플) (0) | 2021.10.13 |
Python - 기초 자료형(문자형) (0) | 2021.10.13 |
Python - 기초 자료형(숫자형) (0) | 2021.10.11 |
Python - 변수 (0) | 2021.10.11 |
댓글