-
[Python] 자료형 - List, TupleNAN/Python 2021. 5. 26. 22:43728x90
파이썬 자료형의 종류
- 숫자 자료형
- 문자열 자료형
- 리스트
- 튜플
- 딕셔너리
- 집합
오늘 포스팅할 자료는 파이썬에서 사용되는 자료형 리스트와 튜플입니다.
먼저 리스트란 연속된 문자열로 구성된 하나의 변수라고 표현합니다.
일반적으로 생각했을 때
하나의 그룹에 여러 가지 요소들이 들어 있는 경우 집합이라고 부르지만, 파이썬에서는 정의하는
집합의 개념이 별도로 존재하기 때문에 이 점 유의하시기 바랍니다.
자 그럼 코드 블록을 통해 문자열과 리스트의 차이점을 한눈에 담아보겠습니다.
A = '문자열' B = ['문자열', 123, (3,4,5), [1,2,3]]
위의 변수 A의 경우 단 하나의 요소를 가지고 있는 반면 변수 B의 경우 이것저것 들어있는 게 많습니다.
리스트를 선언할 때는 먼저 대괄호 [ ]를 지정하고, 각각의 요소들을 컴마 ' , '를 이용하여 구분하고 있습니다.
또 한 가지 눈에 띄는 특징으로는 str, int, tuple, list를 모두 포함하고 있다는 점입니다.
변수를 선언하여 하나의 요소를 넣는걸 상자에 비유했다면 리스트는 방과 같습니다,
여러분의 방에는 물건 하나만 존재하지 않고 침대, 책상, 의자 등등 무수히 많은 것들이 들어있는데
리스트 역시 마찬가지입니다. 리스트에는 문자가 들어있을 수도 있고 숫자 혹은 타입인 리스트 역시 중복되어
리스트를 형성할 수 있습니다.
컴마 ' , '를 기준으로 요소를 나누어 구분하기 때문에 리스트는 인덱싱과 슬라이싱의 사용이 가능합니다.
리스트 인덱싱과 슬라이싱 이처럼 인덱싱과 슬라이싱을 사용하여 원하는 요소를 출력하는 게 가능한데,
여기서 우리는 출력 결과를 눈여겨보아야 할 필요가 있습니다.
만약 리스트의 요소중 숫자로 구성된 요소를 하나만 출력할 경우 int타입으로 출력이 되는 걸 확인할 수 있는데
슬라이싱을 활용할 경우 리스트 타입으로 출력이 된다는 것입니다.
앞서 살펴봤듯이 리스트 안에는 개 수와 관계없이 또 다른 리스트가 들어갈 수 있습니다.
그렇다면 우리가 원하는 요소가 중첩된 리스트 안의 요소라면 어떻게 해당 값을 출력 해 낼 수 있을까요?
중첩된 리스트 요소 꺼내기 답은 일반적으로 사용되는 인덱싱의 활용입니다. 변수명 + 해당 인덱스 번호[ ] + 해당 인덱스 번호[ ]를 조합하게 되면
제가 설정한 변수명 A, 출력하고자 하는 인덱스 번호 [7], 리스트 안의 인덱스 번호 [1]를 사용하여 A [7][1] == 8이라는
값을 출력받게 됩니다.
리스트 연산하기
문자열에서 사용되는 연산을 살펴보았다면 리스트 연산하기는 보다 더 쉽게 접근할 수 있습니다.
list 덧셈 a = [1,2,3] b = [4,5,6] print(a+b) [1,2,3,4,5,6] list 곱셈 a = [1,2,3] b = a*3 print(b) [1,2,3,1,2,3,1,2,3]
리스트는 덧셈과 곱셈이 허용됩니다.
리스트에 사용되는 함수
길이를 구하는 len( )
문자열에도 사용되는 len( ) 함수입니다, len( ) 함수는 보통 리스트의 평균을 구할 때 정수 대신 사용됩니다.
a = [1,2,3,4,5,6] b = sum(a)/len(a) print(b) 3.5
이렇게 정수가 아닌 리스트의 길이를 구하여 평균을 구하는 이유는 코드가 복잡해지고 길어질 때
보다 편리하게 코드를 관리하기 위함입니다.
리스트 데이터 수정
a = [1,2,3,4] a[3] = 5 print(a) [1,2,3,5]
리스트 데이터 수정은 비교적 간단합니다. 바꾸고자 하는 요소의 번호와 원하는 값을 대치하면 수정이 가능합니다.
리스트 요소 삭제
데이터를 삭제하는 방법은 크게 두 가지가 있습니다. del과 remove()
a = [1,2,3,4,1,5,5] del a[0] print(a) a.remove(5) print(a) [2, 3, 4, 1, 5, 5] [2, 3, 4, 1, 5]
먼저 del 변수[ ]의 경우 삭제하고자 하는 인덱스의 번호를 설정하여 리스트의 데이터를 삭제합니다.
반면 remove( ) 함수는 삭제하고자 하는 데이터명을 직접 설정하여 리스트 요소를 수정하는데
같은 요소라도 하나의 값만을 제거하며 처음 나오는 값을 제거합니다.
리스트 원소 추가
append( )
a = [1,2,3,4,5] x = [6,7] a.append(x) print(a) [1, 2, 3, 4, 5, [6, 7]]
insert( )
a = [1,2,3,4,5] x = (6,'문자') a.insert(0,x) print(a) [(6, '문자'), 1, 2, 3, 4, 5]
두 가지 함수는 모두 정수, 실수, 문자, 튜플, 리스트, 딕셔너리를 가리지 않고 모두 추가할 수 있습니다.
참고로 insert( ) 함수의 경우 원하는 인덱스 자리에 추하 하고자 하는 요소를 추가 할 수 있었지만
append( ) 함수는 리스트의 끝 위치로 추가되는 차이가 있었습니다.
비슷한 기능을 하는 함수일짛라도 유동적으로 상황에 맞는 코드를 사용하기 위해서는 함수의 목적과 차이점을 알고
해당 함수의 한계를 파악하는 게 중요하기 때문에 미묘한 차이일지라도 짚고 넘어가겠습니다.
리스트 정렬
sort( )
un = [4,7,6,3,31,1,87] un.sort() print(un) [1, 3, 4, 6, 7, 31, 87] un = [4,7,6,3,31,1,87] un.sort(reverse = False) print(un) [1, 3, 4, 6, 7, 31, 87] un = [4,7,6,3,31,1,87] un.sort(reverse = True) print(un) [87, 31, 7, 6, 4, 3, 1]
sort( ) 함수는 리스트의 요소를 오름차순으로 정렬해주는 기능을 합니다.
기본 형태 sort( )에는 sort(reverse = False)이 생략되어 있는데 여기서 False을 True로 바꿔주면
내림차순의 형태로 리스트를 출력할 수 있습니다.
파이썬에서는 True와 False을 사용할 경우 첫 글자는 항상 대문자로 표현한다는 점!
추가로 sort( ) 함수는 숫자뿐만 아니라 문자도 정렬이 가능하니 참고 바랍니다.
reverse( )
un = [4,7,6,3,31,1,87] un.reverse() print(un) [87, 1, 31, 3, 6, 7, 4]
reverse( ) 함수입니다.
이 함수는 이름 그대로 리스트의 내용을 뒤집어주는 기능이 있습니다.
문자를 포함한 리스트에서도 사용이 가능합니다.
리스트 원소 위치 반환
index( )
un = [4,4,7,6,3,31,1,87,'문자',87] print(un.index(4)) 0
index( ) 함수는 리스트 안에 위치한 요소의 첫 번째 인덱스를 반환합니다.
중복되는 요소가 있더라도 맨 앞에 있는 요소의 번호만을 출력해줍니다.
리스트 특정 원소 개 수 세기
count( )
un = [4,4,7,6,3,31,1,87,'문자',87] un.count(87) 2
리스트 안의 중복되는 요소의 개 수를 파악해주는 함수입니다.
리스트 원소 꺼내기
pop( )
un = [4,4,7,6,3,31,1,87,'문자',87] un.pop(2) 7 print(un) [4,4,6,3,31,1,87,'문자',87]
pop( ) 함수를 통해 꺼내고자 하는 원소의 인덱스를 표출하면 해당 인덱스에 위치한 요소를 출력합니다.
이후 print( ) 함수를 통해 un 변수를 출력하니 인덱스[2]에 위치한 요소 7이 제거가 된 것을 확인할 수 있습니다.
만약 pop( ) 함수 안에 매개 변수를 입력하지 않을 경우 리스트의 마지막 요소를 꺼내게 됩니다.
Python - Tuple
# 튜플의 기본 형태 a = (1,2,3)
튜플의 기본 형태는 위와 같다, 리스트에서는 대괄호 ' [ ] ' 를 통해 코드를 구성하여 사용했다면
튜플은 소괄호 ' ( ) ' 를 통해 코드를 구성한다.
리스트와 매우 유사하게 사용하고 동작되지만 튜플과 리스트의 가장 큰 차이점은 바로
원소를 추가 생성, 삭제, 수정 할 수 없다는 점이다.
만약 새로운 원소를 추가하여 튜플을 만들고 싶다면 새로 만드는 방법밖에 없다는 점 참고하길바란다.
그 외의 모든 동작은 리스트와 같으니 리스트에 사용되는 함수를 다시 확인해보자
'NAN > Python' 카테고리의 다른 글
[Python] 자료형 - set (0) 2021.06.04 [Python] 자료형 - Dictionary (0) 2021.06.02 [Python] 자료형 - 숫자 자료형 (0) 2021.05.22 [Python] 자료형 - 문자열 (1) 2021.05.22 [Python] 변수 (0) 2021.05.21