프로그래밍/파이썬(Python)

파이썬(Python) 데이터 타입: 숫자, 문자열, 리스트, 딕셔너리 완벽 이해 (+QnA)

프리다이어비티즈 2024. 11. 19. 22:30

목차

파이썬(Python)에서 가장 중요한 요소 중 하나는 데이터 타입입니다. 데이터 타입은 변수에 저장되는 데이터의 성격을 정의하며, 프로그램의 동작 방식을 결정합니다. 이번 글에서는 숫자, 문자열, 리스트, 딕셔너리파이썬에서 가장 많이 사용되는 데이터 타입을 초보자들도 쉽게 이해할 수 있도록 설명하겠습니다.

공지

본 포스팅의 무단도용 및 배포를 금지합니다.

1. 숫자(Numbers)

파이썬에서 숫자 데이터 타입정수, 실수, 복소수로 나눌 수 있습니다. 숫자는 수학 연산에 많이 사용되며, 정수실수 간의 계산도 자유롭게 가능합니다.

1) 정수형(Integer): 소수점이 없는 숫자입니다.

a = 10   # 정수형
b = -5   # 음수

 

2) 실수형(Float): 소수점을 포함하는 숫자입니다.

pi = 3.14  # 실수형
g = -9.81  # 음수 실수형

 

3) 복소수형(Complex): 실수허수로 구성된 숫자입니다. j를 사용해 허수를 표현합니다.

z = 2 + 3j  # 복소수

 

4) 기본적인 연산: 덧셈, 뺄셈, 곱셈, 나눗셈은 물론 제곱(**)과 나머지(%) 연산도 가능합니다.

x = 10
y = 3
print(x + y)  # 13 (덧셈)
print(x ** y) # 1000 (10의 3승)

 

2. 문자열(String)

문자열문자집합을 나타내며, 작은 따옴표(')나 큰 따옴표(")로 묶어 표현합니다. 파이썬에서는 문자열을 다루는 다양한 기능을 제공하여 데이터 처리가 매우 편리합니다.

1) 문자열 선언: 문자열은 작은 따옴표나 큰 따옴표로 정의할 수 있습니다.

greeting = "Hello, World!"
name = 'Alice'

 

2) 문자열 연결: 문자열은 + 연산자를 사용해 연결할 수 있습니다.

full_greeting = greeting + " " + name
print(full_greeting)  # "Hello, World! Alice"

 

3) 문자열 반복: * 연산자를 사용해 문자열을 반복할 수 있습니다.

repeated = "Hi! " * 3
print(repeated)  # "Hi! Hi! Hi! "
 

4) 문자열 인덱싱과 슬라이싱: 문자열의 특정 문자에 접근하거나 부분 문자열을 추출할 수 있습니다.

word = "Python"
print(word[0])   # 'P' (인덱싱, 첫 번째 문자)
print(word[1:4]) # 'yth' (슬라이싱, 1번 인덱스부터 3번까지)

 

5) 문자열 메소드: len(), .upper(), .lower(), .replace() 등 문자열을 처리하는 유용한 메소드들이 있습니다.

message = "hello python"
print(message.upper())      # "HELLO PYTHON"
print(message.replace("python", "world"))  # "hello world"

 

3. 리스트(List)

리스트여러 개의 데이터를 모아 하나의 변수에 저장할 수 있는 자료구조입니다. 대괄호([])를 사용하며, 서로 다른 타입의 데이터를 함께 저장할 수도 있습니다.

1) 리스트 선언: 대괄호 안에 데이터를 나열하여 리스트를 정의합니다.

numbers = [1, 2, 3, 4, 5]
mixed_list = [1, "apple", 3.14, True]

 

2) 리스트 인덱싱과 슬라이싱: 리스트의 특정 요소에 접근하거나 부분 리스트를 추출할 수 있습니다.

print(numbers[0])    # 1 (첫 번째 요소)
print(numbers[2:4])  # [3, 4] (슬라이싱)

 

3) 리스트 추가와 삭제:

append(): 리스트의 끝에 요소를 추가합니다.

numbers.append(6)
print(numbers)  # [1, 2, 3, 4, 5, 6]

 

remove(): 리스트에서 특정 값을 제거합니다.

numbers.remove(3)
print(numbers)  # [1, 2, 4, 5, 6]

 

4) 리스트 내포(List Comprehension): 짧은 코드로 리스트를 생성할 수 있는 방법입니다.

squares = [x ** 2 for x in range(1, 6)]
print(squares)  # [1, 4, 9, 16, 25]

 

4. 딕셔너리(Dictionary)

딕셔너리키-값 쌍을 저장하는 자료구조입니다. 중괄호({})를 사용하며, 각각의 는 고유해야 합니다. 딕셔너리빠른 데이터 검색을 위해 사용됩니다.

 

1) 딕셔너리 선언: 중괄호를 사용해 키와 값을 정의합니다.

person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

 

 

2) 값 접근: 를 이용해 값을 얻을 수 있습니다.

print(person["name"])  # "Alice"
print(person["age"])   # 25

 

 

3) 값 추가와 삭제:

추가: 새로운 키-값 쌍을 추가할 수 있습니다.

person["job"] = "Engineer"
print(person)  # {'name': 'Alice', 'age': 25, 'city': 'New York', 'job': 'Engineer'}

 

삭제: del 키워드를 사용해 키-값 쌍을 삭제합니다.

del person["age"]
print(person)  # {'name': 'Alice', 'city': 'New York', 'job': 'Engineer'}

 

 

4)딕셔너리 메소드:

.keys(): 딕셔너리모든 키를 반환합니다.

print(person.keys())  # dict_keys(['name', 'city', 'job'])
 

.values(): 딕셔너리모든 값을 반환합니다.

print(person.values())  # dict_values(['Alice', 'New York', 'Engineer'])

 

.items(): 키-값 쌍을 튜플 형태로 반환합니다.

print(person.items())  # dict_items([('name', 'Alice'), ('city', 'New York'), ('job', 'Engineer')])

 

5. QnA

1. 리스트와 딕셔너리의 차이점은 무엇인가요?
리스트순서가 있는 데이터 집합으로, 인덱스를 사용해 접근할 수 있는 데이터 타입입니다. 딕셔너리키-값 쌍으로 데이터를 저장하며, 특정 키를 사용해 값을 찾는 방식으로 동작합니다. 리스트순서가 중요할 때, 딕셔너리빠른 데이터 검색매핑이 필요할 때 유용합니다.

 

2. 파이썬에서 숫자형 데이터 타입의 종류는 무엇인가요?
파이썬에서 숫자형 데이터 타입은 크게 세 가지로 구분됩니다: 정수형(Integer), 실수형(Float), 복소수형(Complex)입니다. 정수형은 소수점이 없는 숫자를, 실수형은 소수점을 포함하는 숫자를, 복소수형은 실수와 허수 부분을 포함한 숫자를 나타냅니다.

 

3. 문자열을 리스트로 변환할 수 있나요?
네, 문자열리스트로 변환할 수 있습니다. 문자열을 하나씩 분리하여 리스트로 만들기 위해 list() 함수를 사용할 수 있습니다. 또는, split() 메소드를 사용해 특정 구분자로 문자열을 나누어 리스트로 변환할 수 있습니다.

word = "hello"
letters = list(word)  # ['h', 'e', 'l', 'l', 'o']

sentence = "Hello Python World"
words = sentence.split()  # ['Hello', 'Python', 'World']

 

4. 리스트에 다른 데이터 타입들을 함께 저장할 수 있나요?
네, 파이썬 리스트는 서로 다른 데이터 타입들을 함께 저장할 수 있습니다. 예를 들어, 정수, 실수, 문자열, 논리형 등을 한 리스트에 포함할 수 있습니다. 이는 파이썬 리스트의 유연성과 강력한 기능을 나타냅니다.

mixed_list = [1, "apple", 3.14, True]

 

5. 딕셔너리의 키로 리스트를 사용할 수 있나요?
아니요, 딕셔너리의 키변경 불가능한 데이터 타입이어야 합니다. 리스트는 변경 가능한 데이터 타입이기 때문에 딕셔너리의 로 사용할 수 없습니다. 대신 튜플과 같은 변경 불가능한 타입을 키로 사용할 수 있습니다.

 

6. 파이썬에서 문자열은 변경할 수 있나요?
아니요, 파이썬 문자열불변(immutable) 특성을 가집니다. 즉, 문자열을 생성한 후에는 그 내용을 변경할 수 없습니다. 문자열을 변경하려면 새로운 문자열을 생성해야 합니다.

text = "hello"
# text[0] = 'H'  # 오류 발생 (불변 특성 때문에 수정 불가)
text = "H" + text[1:]  # 새로운 문자열 생성 ("Hello")

 

7. 리스트와 문자열의 공통점은 무엇인가요?
리스트문자열은 둘 다 인덱싱슬라이싱이 가능합니다. 예를 들어, 문자열의 특정 문자나 리스트의 특정 요소에 인덱스를 사용해 접근할 수 있으며, 부분 문자열이나 부분 리스트슬라이싱을 통해 추출할 수 있습니다. 둘 다 시퀀스 데이터 타입에 속하기 때문에 이와 같은 공통점을 가집니다.

word = "Python"
letters = word[0:3]  # 'Pyt'

numbers = [1, 2, 3, 4, 5]
subset = numbers[1:4]  # [2, 3, 4]

 

8. 리스트의 크기를 변경할 수 있나요?
네, 리스트동적 크기를 가지기 때문에 요소를 추가하거나 삭제하여 크기를 변경할 수 있습니다. append(), remove(), extend(), pop() 등을 사용해 리스트의 크기를 유동적으로 조정할 수 있습니다.

numbers = [1, 2, 3]
numbers.append(4)  # [1, 2, 3, 4]
numbers.remove(2)  # [1, 3, 4]

 

9. 딕셔너리에서 같은 키를 여러 번 사용할 수 있나요?
딕셔너리에서는 가 고유해야 합니다. 즉, 같은 키를 여러 번 사용할 수 없습니다. 만약 동일한 키로 값을 할당하게 되면, 기존의 값이 덮어쓰기 됩니다.

person = {"name": "Alice", "age": 25}
person["age"] = 30  # 키 "age"의 값이 25에서 30으로 변경됨

 

10. 파이썬에서 리스트를 복사할 때 주의할 점은 무엇인가요?
리스트를 복사할 때 주의할 점은 얕은 복사깊은 복사입니다. 단순히 = 연산자를 사용하면 리스트의 참조만 복사되므로 원본 리스트가 변경되면 복사본도 함께 변경됩니다. 이를 방지하려면 리스트의 슬라이싱([:])을 사용하거나, copy() 메소드를 사용해 복사해야 합니다. copy.deepcopy() 함수는 중첩된 리스트까지 모두 복사합니다.

import copy

original = [1, 2, [3, 4]]
shallow_copy = original[:]  # 얕은 복사
deep_copy = copy.deepcopy(original)  # 깊은 복사

original[2][0] = 99
print(shallow_copy)  # [1, 2, [99, 4]]
print(deep_copy)     # [1, 2, [3, 4]]

 

11. 파이썬에서 숫자 데이터를 문자열로 변환할 수 있나요?
네, 숫자 데이터문자열로 변환하려면 str() 함수를 사용합니다. 반대로 문자열을 숫자로 변환하려면 int() 또는 float()를 사용할 수 있습니다.

number = 10
text = str(number)  # 숫자 10을 문자열 "10"으로 변환
print(text)  # "10"

 

12. 딕셔너리 안에 리스트를 저장할 수 있나요?
네, 딕셔너리의 값으로 리스트를 저장할 수 있습니다. 딕셔너리키-값 쌍에서 부분에 리스트를 넣어 여러 데이터를 그룹화할 수 있습니다.

grades = {
    "Alice": [90, 85, 82],
    "Bob": [88, 79, 92]
}
print(grades["Alice"])  # [90, 85, 82]

 

13. 리스트를 정렬하려면 어떻게 해야 하나요?
리스트오름차순 또는 내림차순으로 정렬하려면 sort() 메소드나 sorted() 함수를 사용할 수 있습니다. sort()는 리스트 자체를 변경하며, sorted()는 정렬된 새로운 리스트를 반환합니다.

numbers = [3, 1, 4, 1, 5]
numbers.sort()  # 원본 리스트를 오름차순으로 정렬
print(numbers)  # [1, 1, 3, 4, 5]

desc_numbers = sorted(numbers, reverse=True)  # 내림차순 정렬된 새로운 리스트 반환
print(desc_numbers)  # [5, 4, 3, 1, 1]

 

14. 문자열에서 특정 문자가 몇 번 등장했는지 세려면 어떻게 하나요?
문자열에서 특정 문자가 몇 번 등장했는지 세려면 .count() 메소드를 사용합니다. 이 메소드는 문자열 내에서 특정 문자부분 문자열의 등장 횟수를 반환합니다.

sentence = "hello world"
count_l = sentence.count("l")
print(count_l)  # 3 ('l'이 3번 등장)

 

15. 딕셔너리에서 키가 존재하는지 확인하려면 어떻게 하나요?
딕셔너리에서 특정 가 존재하는지 확인하려면 in 키워드를 사용합니다. 이 키워드를 사용해 딕셔너리에 해당 키가 있는지 여부를 True 또는 False로 반환받을 수 있습니다.

person = {"name": "Alice", "age": 25}
if "name" in person:
    print("이름이 존재합니다.")  # 출력: 이름이 존재합니다.

 


파이썬데이터 타입은 프로그램의 기초를 이루며, 이를 잘 이해하는 것이 중요합니다. 숫자, 문자열, 리스트, 딕셔너리는 각각 특정한 상황에서 유용하게 사용되며, 이러한 자료형을 잘 활용하면 효율적인 코드 작성이 가능합니다. 숫자는 기본적인 계산과 데이터 연산에 사용되며, 문자열텍스트 데이터 처리에 필수적입니다. 리스트여러 데이터순서대로 관리할 때, 딕셔너리키-값 구조로 데이터 매핑이 필요할 때 사용됩니다.

 

이제 여러분도 파이썬의 다양한 데이터 타입을 활용하여 프로그래밍에 한 걸음 더 가까워질 수 있습니다. 연습을 통해 각 데이터 타입의 특성을 잘 이해하고, 다양한 상황에서 적절하게 활용해 보세요.