배열 (Array)
배열이란?
- 동일한 데이터 타입의 원소들을 연속적으로 저장하는 방식의 자료구조
- 메모리에서 연속적으로 할당되기 때문에 인덱스를 통해 빠르게 접근 가능함
배열의 특징
- 고정된 크기: 배열의 크기는 선언 시 정해지며, 이후에는 변경할 수 없음
- 인덱스 접근: 배열의 각 원소는 인덱스를 통해 접근 가능함
- 동일한 데이터 타입: 배열 안의 모든 원소는 동일한 데이터 타입이어야 함
리스트 자료형
파이썬에서는 기본적으로 배열을 지원하지 않지만, 리스트(list)를 통해 비슷한 기능을 제공한다. 하지만 배열과는 큰 차이점이 있는데, 크기가 가변적이라는 것이다. C나 Java와는 달리 파이썬의 리스트는 미리 리스트의 크기를 정해 줄 필요가 없고, 따로 동적 크기 할당을 할 필요도 없어서 파이썬이 정말x100 편리한 것 같다😁
리스트의 또 다른 특징은 요소의 자료형을 통일해주지 않아도 된다는 것이다. 하나의 리스트에 정수, boolean, 문자열, 또 다른 리스트 등을 모두 넣을 수도 있지만, 값을 읽을 때 속도가 느려진다는 단점도 있다.
리스트의 특징
- 가변 길이: 리스트는 생성 후에도 크기를 변경할 수 있다. 즉, 원소를 추가하거나 삭제할 수 있다.
- 다양한 데이터 타입: 리스트는 정수, 문자열, 객체 등 서로 다른 데이터 타입의 원소를 포함할 수 있다.
- 인덱스 사용: 리스트의 각 원소는 인덱스를 통해 접근할 수 있다. 인덱스는 0부터 시작한다.
- 중첩 가능: 리스트 안에 다른 리스트를 포함할 수 있어 다차원 리스트를 만들 수 있다.
리스트 생성
리스트는 대괄호 []를 사용하여 생성한다.
# 빈 리스트 생성
list1 = []
# 숫자 리스트 생성
list2 = [1, 2, 3, 4, 5]
# 문자열 리스트 생성
list3 = ["apple", "banana", "kiwi"]
# list()로도 생성 가능
list4 = list()
리스트의 기본적인 사용법
리스트의 원소는 인덱스를 사용하여 접근할 수 있다.
fruits = ["apple", "banana", "kiwi"]
print(fruits[0]) # apple
print(fruits[1]) # banana
print(fruits[-1]) # kiwi
append() 메서드를 사용하여 리스트의 끝에 원소를 추가할 수 있다.
fruits.append("orange")
print(fruits) # ['apple', 'banana', 'kiwi', 'orange']
remove() 메서드를 사용하여 특정 원소를 삭제할 수 있다. 인덱스를 사용해 삭제할 경우 del 키워드를 사용한다.
fruits.remove("banana")
print(fruits) # ['apple', 'kiwi', 'orange']
del fruits[0]
print(fruits) # ['kiwi', 'orange']
len() 함수를 사용하여 리스트의 원소 개수를 확인할 수 있다.
print(len(fruits)) # 2
리스트의 일부를 선택하여 새로운 리스트를 만들 수 있다. 이를 슬라이싱이라고 한다.
numbers = [1, 2, 3, 4, 5]
sub_list = numbers[1:4]
print(sub_list) # [2, 3, 4]
파이썬에서는 리스트에 내부적으로 정렬 메서드를 제공한다.
mylist = [2, 4, 1, 3]
mylist.sort()
print(mylist) # [1, 2, 3, 4]
mylist.sort(reverse=True)
print(mylist) # [4, 3, 2, 1]
튜플 자료형
튜플(tuple)은 리스트와 마찬가지로 인덱스를 활용하는 자료형이다. 하지만 리스트와는 다르게 수정이 불가능하다는 특징을 가지고 있다.
mytuple = (1, 2, 5, 4, 3)
print(mytuple[0]) # 1
mytuple[0] = 100 # TypeError: 'tuple' object does not support item assignment
del mytuple[0] # TypeError:'tuple' object doesn`t support item deletion
튜플에서는 수정과 삭제가 지원되지 않기 때문에, 값이 변하지 않는 데이터들을 넣어줘야 한다. 만약 튜플을 수정할 일이 발생할 경우, 튜플을 리스트로 변환해 수정한 후 다시 튜플로 변환해야 한다.
mytuple = (1, 2, 3, 4, 6)
mytuple_list = list(mytuple) # [1, 2, 3, 4, 6]
mytuple_list[4] = 5 # [1, 2, 3, 4, 5]
mytuple = tuple(mytuple_list) # (1, 2, 3, 4, 5)
문자열 (String)
파이썬에서 문자열은 텍스트 데이터를 표현하는 기본적인 데이터 타입이다. 문자, 숫자, 기호 등을 포함할 수 있으며, immutable한 특성을 가진다. 즉, 문자열을 생성한 후에는 그 내용을 변경할 수 없다.
문자열의 특징
- 불변성: 문자열은 생성 후 변경할 수 없다. 새로운 문자열을 만들려면 기존 문자열을 기반으로 새로운 문자열을 생성해야 한다.
- 인덱스와 슬라이싱: 문자열의 각 문자는 인덱스를 통해 접근할 수 있으며, 슬라이싱을 통해 부분 문자열을 쉽게 얻을 수 있다.
- 다양한 연산: 문자열은 다양한 연산과 메서드를 지원하여 텍스트 처리에 유용하다.
문자열은 작은따옴표(') 또는 큰따옴표(")를 사용하여 생성할 수 있다.
str1 = 'Hello, World!'
str2 = "Hello, World!"
리스트와 마찬가지로, 문자열의 각 문자는 인덱스를 통해 접근할 수 있다.
text = "Krafton Jungle"
print(text[0]) # K
print(text[1]) # r
len() 함수를 사용하여 문자열의 길이를 확인할 수 있다.
print(len(text)) # 14
슬라이싱을 사용하여 문자열의 일부를 선택할 수 있다.
substring = text[1:4] # raf
print(substring)
+ 연산자를 사용하여 문자열을 연결할 수 있다.
str1 = "Hello"
str2 = "World"
str3 = str1 + ", " + str2 + "!"
print(str3) # Hello, World!
* 연산자를 사용하여 문자열을 반복할 수 있다.
repeat_str = "ha" * 3
print(repeat_str) # hahaha
파이썬은 문자열에 대해 다양한 메서드를 제공한다.
- 대문자 변환: upper(), lower()
- 문자열 찾기: find(), count()
- 문자열 분할: split()
- 문자열 결합: join()
text = "hello world"
print(text.upper()) # HELLO WORLD
print(text.find("o")) # 4
print(text.split()) # ['hello', 'world']
리스트와 문자열
join() 메서드를 통해 리스트에서 문자열을 생성할 수 있다.
list = ["Python", "is", "fun"]
str = ' '.join(list)
print(str) # Python is fun
특정 조건을 만족하는 배열의 요소만 따로 모아서 문자열로 만드는 것도 가능하다.
word_list = ["Krafton", "nexon", "netmable", "Jungle", "teemo"]
text = ''.join(word for word in word_list if word[0].isupper())
print(text) # KraftonJungle'Krafton Jungle > 2. Keywords' 카테고리의 다른 글
| [WEEK02] 이진 탐색 (0) | 2025.03.20 |
|---|---|
| [WEEK01] 완전 탐색 (0) | 2025.03.18 |
| [WEEK01] 복잡도와 정렬 (0) | 2025.03.16 |
| [WEEK01] 정수론 (0) | 2025.03.15 |
| [WEEK01] 반복문과 재귀 함수 (0) | 2025.03.15 |