Krafton Jungle/2. Keywords

[WEEK01] 배열과 문자열

munsik22 2025. 3. 15. 14:48

배열 (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