컨테이너 자료형
파이썬의 컨테이너 자료형은 여러 가지 값을 한 번에 담을 수 있는 자료 구조를 의미합니다. 컨테이너 자료형의 종류에는 문자열, 리스트(List), 세트(Set), 딕셔너리(Dict), 튜플(Tuple) 등이 있습니다. 문자열 자료형에 대해서는 지난 글에서 한 번 다룬 적이 있습니다. 이번 글에서는 문자열에서 사용할 수 있는 다양한 함수들을 알아보면서, 다른 컨테이너 자료형에는 무엇이 있는지 살펴보겠습니다.
그전에 알고 갈 내용들... 👉
⭐ len()
len(컨테이너)
컨테이너의 길이를 반환하는 함수입니다.
컨테이너 공통 연산자
이전 파이썬 훑어보기 2 - 변수와 자료형에서 공부했던 문자열 연산자들을 똑같이 사용할 수 있습니다. 딕셔너리만 예외사항이 있으니 확인하세요.
- + : 컨테이너들을 연결합니다.
- * : 컨테이너를 반복합니다.
- [] : 컨테이너의 요소를 선택합니다. 이 기능을 인덱싱이라고 합니다.
- [:] : 컨테이너의 특정 범위를 추출합니다. 이 기능을 슬라이싱이라고 합니다.
- in, not in : 컨테이너 내부에 특정 요소가 있는지, 없는지 확인합니다.
- * : 컨테이너 앞에 붙이면 컨테이너를 전개(요소1, 요소2, 요소3...)해 입력한 것처럼 바뀝니다.
⭐ 인덱싱, 슬라이싱
- [n] : 인덱스 n의 요소를 선택합니다. 인덱스는 0부터 시작하며, 음수를 입력하면 컨테이너의 뒤에서부터 순서를 셉니다.
- [n:m] : 인덱스 n부터 m - 1까지의 요소들을 추출합니다. n과 m 중 하나는 생략이 가능합니다. n을 생략할 경우 0:와 같고, m을 생략할 경우 :컨테이너의 길이와 같습니다.
- [n:m:s] : 인덱스 n부터 m - 1까지의 요소들을 s씩 건너뛰며 추출합니다. [n:m]과 마찬가지로 n과 m 중 하나는 생략이 가능합니다. s는 당연히 생략할 수 없겠죠?
⚠ 딕셔너리의 경우, 인덱싱을 할 때 인덱스 대신 키를 넣습니다. 슬라이싱은 사용할 수 없습니다.
🟨 문자열 str
따옴표(", ')로 감싼 문자는 문자열 자료형에 해당됩니다. 여러 줄의 문자열은 (""" ~ """)을 사용하기도 합니다.
문자열 함수
format()
"Hello {} {}".format(100, 200) → "Hello 100 200"
문자열 속에 중괄호({})를 넣어 데이터를 삽입할 수 있게 하는 함수입니다. 중괄호({}) 부분에 데이터를 순차적으로 대입하여 새로운 문자열을 만들어 냅니다.
위에서 배웠던 전개연산자를 사용해 *리스트 형식으로 데이터를 삽입하면 데이터 관리가 편해지겠죠?
f-문자열
f"Hello {100} {200}" → "Hello 100 200"
format() 함수와 같은 기능을 하지만 사용방법에서 차이가 있습니다. 문자열 앞에 f를 붙여줍니다. 중괄호 ({}) 안에는 어떤 표현식이든 넣을 수 있습니다.
❓ 표현식이란?
- 표현식은 결괏값을 반환하는 계산식을 의미합니다.
upper(), lower(), capitalize(), swapcase(), title()
대문자, 소문자를 변환하는 함수입니다.
str_1 = "abcde"
str_1.upper() -> "ABCDE" # 대문자로 변환
str_1.capitalize() -> "Abcde" # 첫 문자만 대문자로 변환
str_2 = "ABCDE"
str_2.lower() -> "abcde" # 소문자로 변환
str_3 = "AbCdE"
str_3.swapcase() -> "aBcDe" # 대문자와 소문자를 서로 변경하여 변환
str_4 = "abc def"
str_4.title() -> "Abc Def" # 각 문자의 첫 문자를 대문자로 변환
replace(old, new)
문자 일부를 대체하는 함수입니다.
"Hello World!".replace("World", "Python") -> "Hello Python!"
strip(), lstrip(), rstrip()
공백이나 특정 문자를 제거하는 함수입니다.
str = " 안녕하세요 " # 양옆으로 공백 있음
str.strip() -> "안녕하세요" # 양옆 공백 모두 제거
str.lstrip() -> "안녕하세요 " # 왼쪽 공백 제거
str.rstrip() -> " 안녕하세요" # 오른쪽 공백 제거
isOO()
isalpha() : 모든 문자가 알파벳인지 확인
isdigit() : 모든 문자가 숫자인지 확인
isalnum(): 모든 문자가 알파벳 또는 숫자인지 확인
isspace() : 모든 문자가 공백인지 확인
find(), rfind()
부분 문자를 찾는 함수입니다.
find() : 왼쪽부터 찾아서 처음 등장하는 위치의 인덱스를 반환합니다.
rfind() : 오른쪽부터 찾아서 처음 등장하는 위치의 인덱스를 반환합니다.
"HiHeyHi".find("Hi") # 0
"HiHeyHi".rfind("Hi") # 5
⚠ rfind는 찾는 단어의 시작 글자를 오른쪽부터 찾아서 처음 등장하는 위치의 인덱스를 반환합니다. 찾는 단어의 마지막 글자의 처음 등장 위치를 반환하는 것이 아닙니다.
split()
문자열을 구분자로 분리하여 리스트로 반환하는 함수입니다.
numbers = "1 2 3 4 5".split(" ") # ["1", "2", "3", "4", "5"]
join()
split()과 반대로 리스트 요소 사이사이에 문자열의 구분자를 삽입하여 하나의 문자열로 반환하는 함수입니다.
", ".join(["1", "2", "3"]) -> "1, 2, 3"
🟨 리스트 list
인덱스 기반으로 값을 저장할 때 사용합니다. 자바, 코틀린의 list와 같은 역할을 합니다.
리스트 생성과 접근
생성
리스트명 = [요소1, 요소2, 요소3... ]
접근
리스트명[인덱스]
리스트 출력 형태
[10, 20, '문자열', '문자열']
리스트 함수
append(요소) : 요소 추가
clear() : 모든 요소 제거
copy() : 리스트 복제
count(요소) : 리스트 안에 요소가 몇 개 있는지 반환
extend(리스트) : 리스트의 요소들을 모두 추가
index(요소, 시작인덱스, 끝인덱스) : 시작인덱스부터 끝인덱스 - 1까지 요소가 위치한 첫 번째 인덱스를 반환
insert(위치, 요소) : 특정 위치(인덱스)에 요소 추가
pop(인덱스) : 해당 인덱스의 요소 제거한 후 그 요소를 반환
remove(값) : 요소 제거
reverse() : 리스트 요소들의 순서 뒤집기
sort() : 오름차순 정렬
sort(reverse=Ture) : 내림차순 정렬
리스트 내포
리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것 [if 조건문]]
[] 안에서 표현식과 for문을 사용하여 리스트를 생성할 수 있습니다.
for문 안에서 리스트 요소들을 추가한 것처럼 동작합니다.
if 조건문이 있다면 조건문에 해당하는 요소들만 리스트 안에 생성됩니다. 조건문은 생략이 가능합니다.
제너레이터 표현식
제너레이터 이름 = (표현식 for 반복자 in 반복할 수 있는 것 [if 조건문])
리스트 내포의 대괄호([])를 소괄호(()) 로 변경하면 제너레이터 표현식을 만들 수 있습니다. 제너레이터 표현식으로 리스트 내포를 대체할 수 있습니다.
리스트 내포는 새로운 리스트를 반환하지만 제너레이터 표현식은 제너레이터를 반환합니다. 제너레이터를 사용할 때 요소를 하나씩 계산해서 사용합니다. 이 방식은 메모리 소비를 줄일 수 있습니다.
제너레이터에 대해서는 다음 글에서 설명합니다.
🟨 세트 set
순서에 의미가 없고, 중복을 허용하지 않는 컨테이너 자료형입니다. 자바, 코틀린의 set과 같은 역할을 합니다.
세트 생성과 접근
생성
세트명 = {요소, 요소, 요소...}
접근
인덱싱으로 접근하려면 리스트나 튜플로 변환해야 합니다.
세트 출력 형태
{10, 20, '문자열', '문자열'}
세트 연산자
| (합집합) : 두 set의 요소를 합쳐 새로운 set를 만듭니다.
& (교집합) : 두 set의 공통 요소만으로 새로운 set를 만듭니다.
- (차집합) : 왼쪽 set에서 오른쪽 set에 있는 요소들을 제거하여 새로운 set를 만듭니다.
^ (대칭차집합) : 한쪽에만 존재하는 요소들로 새로운 set를 만듭니다.
세트 함수
add(요소) : 요소 추가
clear() : 모든 요소 제거
copy() : 세트 복제
discard(요소) : 특정 요소 제거. 요소가 없어도 오류를 발생시키지 않습니다.
remove(요소) : 요소 제거
pop() : 임의의 요소를 제거하고 그 요소를 반환
세트 내포
세트 이름 = {표현식 for 반복자 in 반복할 수 있는 것 [if 조건문]}
{} 안에서 표현식과 for문을 사용하여 세트를 생성할 수 있습니다.
🟨 딕셔너리 dictionary
키를 기반으로 값을 저장할 때 사용합니다. 자바, 코틀린의 map과 같은 역할을 합니다.
딕셔너리 생성과 접근
생성
딕셔너리명 = {
"키": 값,
"키": 값,
...
"키": 값
}
접근
딕셔너리명[키]
- 새로운 키에 새로운 값을 할당해 주면 새로운 요소가 저장됩니다.
- 같은 키에 새로운 값을 할당해 주면 기존 값이 수정됩니다.
딕셔너리 출력 형태
{'키': 값, '키': 값, '키': 값}
딕셔너리 내포
딕셔너리 이름 = {
f"키_{반복자}": 표현식
for 반복자 in 반복할 수 있는 것
[if 조건문]
}
{} 안에서 표현식과 for문을 사용하여 세트를 생성할 수 있습니다. 키 이름이 중복되지 않도록 해야 합니다.
🟨 튜플 tuple
순서가 있는 불변의 컨테이너 자료형입니다. 리스트와 비슷하지만 한 번 생성된 요소를 변경할 수 없습니다.
튜플 생성과 접근
생성
튜플명 = (요소, 요소, 요소... )
요소를 하나만 가지는 튜플을 생성할 때에도 요소 뒤에 콤마(,)를 붙여주어야 합니다.
접근
튜플명[인덱스]
특징
튜플로 인식될 수 있다면 괄호를 생략할 수 있습니다.
a, b, c = 10, 20, 30
a, b = b, a
튜플 출력 형태
리스트와 동일한 형태로 출력됩니다.
(10, 20, '문자열', '문자열')
'개발공부 > Python : 파이썬' 카테고리의 다른 글
파이썬 훑어보기 6 - 예외 처리 (1) | 2024.12.18 |
---|---|
파이썬 훑어보기 5 - 함수 (1) | 2024.12.17 |
파이썬 훑어보기 3 - 조건문과 반복문 (0) | 2024.12.11 |
파이썬 훑어보기 2 - 변수와 자료형, 연산자 (1) | 2024.12.10 |
파이썬 훑어보기 1 - 파이썬이란 무엇인가? (1) | 2024.12.09 |