인터넷

파이썬 자료형이란 무엇이며, 어떤 종류가 있나요? 2강

idcjw 2025. 8. 29. 14:26
반응형

 

 


파이썬 자료형이란 무엇이며, 어떤 종류가 있나요?

자료형은 값의 타입을 구분하는 것으로, 값이 숫자인지 문자인지 등을 구분하게 해주며 , 숫자, 문자, 불리언, 리스트, 튜플, 딕셔너리, 집합 등이 있습니다


 

💡 주요 자료형인 숫자형, 문자열, 리스트의 특징은 무엇인가요?

  • 숫자형: 정수형(int)과 실수형(float)이 있으며, 사칙연산, 몫, 나머지, 제곱 등의 연산이 가능합니다.
  • 문자열: 큰따옴표, 작은따옴표, 또는 세 개의 따옴표로 만들 수 있으며, 인덱싱, 슬라이싱, 포맷팅, 문자열 함수(count, find, replace 등)를 활용할 수 있습니다.
  • 리스트: 여러 값을 하나의 변수에서 관리하는 서랍장과 같은 개념으로, 다양한 자료형을 함께 담을 수 있고, 인덱싱, 슬라이싱, 값 수정 및 삭제, 다양한 함수(append, sort, reverse 등)를 사용할 수 있습니다.

파이썬 프로그래밍의 핵심인 자료형변수의 개념을 명확히 이해하고 실습을 통해 익힐 수 있는 강의입니다. 단순히 이론을 나열하는 것을 넘어, 숫자형, 문자열, 리스트 등 각 자료형이 실제 코드에서 어떻게 동작하고 활용되는지 구체적인 예시와 함께 설명합니다. 특히 문자열의 인덱싱, 슬라이싱, 포맷팅, 그리고 리스트의 다양한 조작 함수들을 배우며 파이썬으로 데이터를 다루는 실용적인 기술을 습득할 수 있습니다. 프로그래밍 초보자도 쉽게 따라 하며 파이썬의 기본기를 탄탄히 다질 수 있도록 구성되어 있어, 앞으로 더 복잡한 코드를 이해하고 작성하는 데 필수적인 기반을 마련해 줄 것입니다.

 

1. 파이썬 프로그래밍 기초: 자료형의 중요성 및 개념

  1. 자료형의 중요성:
  2. 파이썬 프로그래밍에서 자료형은 언어의 절반을 터득했다고 할 만큼 중요한 개념이다.
  3. 자료형은 값의 타입을 구분하여, 예를 들어 '1'이 숫자 1인지 문자 '1'인지 구분하게 해준다.
  4. 프로그래밍에서는 사람이 암묵적으로 숫자로 인식하는 것과 달리, 프로그램은 정해진 형식(자료형)에 따라 값을 처리한다.
  5. 자료형의 종류:
  6. 기본 자료형: 숫자, 문자, 참/거짓을 나타내는 불리언(Boolean)이 있다.
  7. 자료 구조: 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), 집합(Set) 등이 있으며, 이는 값을 담는 자료 구조의 역할을 한다.
  8. 변수의 개념:
  9. 변수는 어떤 값을 담는 상자이다.
  10. 예를 들어, 'a = 3'은 숫자 자료 3을 'a'라는 상자에 담는다는 의미이다.
  11. 수학에서의 등호(=)와 달리, 프로그래밍에서는 오른쪽에 있는 값을 왼쪽 변수에 넣는다는 의미로 사용된다.
  12. 'a = a + 1'은 기존 'a' 값(3)에 1을 더한 4를 다시 'a'에 넣는다는 의미이다.

2. 숫자형 자료형

2.1. 숫자형의 종류 및 확인 방법

  1. 숫자형의 종류:
  2. 정수형(int): 소수점이 없는 숫자이다.
  • 예시: 'a = 1'
  • print(a) 실행 시 1이 출력된다.
  1. 실수형(float): 소수점이 있는 숫자이다.
  • 예시: 'a = 1.2'
  • print(type(a)) 실행 시 'float'이 출력된다.
  1. 기타 숫자형: 지수 표현 방식, 8진수, 16진수 등이 있으나, 실제 프로그래밍에서는 거의 사용되지 않는다.
  • 지수 표현 예시: '4.24e10'은 4.24 * 10^10을 의미하며, 'e'는 10의 거듭제곱을 나타낸다.
  • '-e'는 10의 음수 거듭제곱(소수점)을 나타낸다.
  1. 자료형 확인:
  2. 변수의 자료형이 궁금할 때는 type() 함수를 사용하여 확인할 수 있다.
  3. 예시: print(type(a))를 실행하면 'class int' (정수형) 또는 'class float' (실수형) 등으로 출력된다.

2.2. 숫자형 사칙연산 및 기타 연산

  1. 사칙연산:
  2. 덧셈: + 기호를 사용한다.
  • 예시: a = 3, b = 4 일 때 print(a + b)는 7을 출력한다.
  1. 곱셈: * 기호를 사용한다. (수학의 'x'와 혼동 방지)
  • 예시: print(a * b)는 12를 출력한다.
  1. 나눗셈: / 기호를 사용한다.
  • 예시: print(a / b)는 0.75와 같은 실수형 결과를 출력한다.
  • 다른 언어와 달리 파이썬의 /는 몫이 아닌 실수형 나눗셈 결과를 반환한다.
  1. : // 기호를 두 개 붙여 사용한다.
  • 예시: print(3 // 4)는 0을 출력한다.
  1. 나머지: % 기호를 사용한다.
  • 예시: print(3 % 4)는 3을 출력한다.
  1. 제곱 연산:
  2. <em></em> 기호를 두 개 붙여 사용한다.
  3. 예시: print(3 <em></em> 4)는 3의 4승인 81을 출력한다.

3. 문자열 자료형

3.1. 문자열 생성 방법 및 특징

  1. 문자열 생성 방법:
  2. 큰따옴표(") 사용: "Hello World"
  3. 작은따옴표(') 사용: 'Hello World'
  4. 큰따옴표 3개(""") 사용: """Hello World"""
  5. 작은따옴표 3개(''') 사용: '''Hello World'''
  6. 문자열의 타입은 str (String의 약자)이다.
  7. 따옴표 포함 문자열 처리:
  8. 문자열 안에 작은따옴표가 포함될 경우, 바깥을 큰따옴표로 감싸면 오류 없이 처리할 수 있다.
  • 예시: 'Python's favorite food is perl' (오류 발생)
  • 예시: "Python's favorite food is perl" (정상 작동)
  1. 마찬가지로 문자열 안에 큰따옴표가 포함될 경우, 바깥을 작은따옴표로 감싸면 된다.
  2. 백슬래시(\) 사용: 문자열 내부에 따옴표를 넣고 싶을 때, 따옴표 앞에 백슬래시를 붙여 이스케이프 문자(Escape Character)로 처리할 수 있다.
  • 예시: 'Python\'s favorite food is perl'
  1. 여러 줄 문자열 처리:
  2. 이스케이프 문자 \n 사용: 줄 바꿈을 나타내는 이스케이프 문자 \n을 사용하여 여러 줄의 문자열을 표현할 수 있다.
  • 예시: 'Like\nPython'
  1. 따옴표 3개 사용: 큰따옴표 3개 또는 작은따옴표 3개로 문자열을 감싸면, 문자열 내에서 엔터(줄 바꿈)나 탭(간격)을 그대로 인식하여 여러 줄의 문자열을 쉽게 표현할 수 있다.
  • 이 방법은 이스케이프 문자를 사용하지 않아도 된다는 장점이 있다.
  1. 기타 이스케이프 문자: \t (탭), \\ (백슬래시 자체), \' (작은따옴표), \" (큰따옴표) 등이 있다.

3.2. 문자열 연산

  1. 문자열 연결(덧셈):
  2. + 기호를 사용하여 두 개 이상의 문자열을 연결할 수 있다.
  3. 예시: 'Python' + ' is fun''Python is fun'을 출력한다.
  4. 문자열 반복(곱셈):
  5. * 기호와 숫자를 사용하여 문자열을 여러 번 반복 출력할 수 있다.
  6. 예시: 'Python' * 100은 'Python'을 100번 반복하여 출력한다.

3.3. 문자열 인덱싱과 슬라이싱

  1. 인덱싱(Indexing):
  2. 문자열 내의 특정 문자 하나를 가리키는 방법이다.
  3. 대괄호([]) 안에 숫자를 넣어 사용하며, 숫자는 인덱스(Index)라고 불리는 문자의 위치 번호이다.
  4. 양수 인덱스: 0부터 시작하여 왼쪽에서 오른쪽으로 순서대로 번호가 매겨진다.
  • 예시: 'Python'에서 P는 0번, y는 1번, t는 2번 등이다.
  • 'Python'[0]P를 출력한다.
  1. 음수 인덱스: -1부터 시작하여 오른쪽에서 왼쪽으로 순서대로 번호가 매겨진다.
  • 예시: 'Python'에서 n은 -1번, o는 -2번 등이다.
  • 'Python'[-1]n을 출력한다.
  1. 슬라이싱(Slicing):
  2. 문자열의 특정 부분을 잘라내는 방법이다.
  3. [시작인덱스:끝인덱스] 형태로 사용하며, 시작 인덱스부터 끝 인덱스 미만까지의 문자열을 잘라낸다.
  • 예시: 'Python'[0:7]'Python'을 출력한다. (7번 인덱스 미만까지)
  1. 간격 지정: [시작인덱스:끝인덱스:간격] 형태로 사용하여 특정 간격으로 문자를 건너뛰며 잘라낼 수 있다.
  • 예시: 'Python'[::2]'Pto'를 출력한다. (처음부터 끝까지 2칸 간격)
  1. 시작/끝 인덱스 생략:
  • [ :끝인덱스]는 처음부터 끝 인덱스 미만까지 잘라낸다.
  • [시작인덱스: ]는 시작 인덱스부터 끝까지 잘라낸다.
  • [ : ]는 처음부터 끝까지 전체 문자열을 의미한다.
  1. 음수 슬라이싱: 음수 인덱스를 사용하여 뒤에서부터 슬라이싱할 수 있다.
  • 예시: 'Python'[-2:]'on'을 출력한다.

3.4. 문자열 포맷팅

  1. 문자열 포맷팅의 필요성:
  2. 문자열 안에 변수나 값을 삽입하여 출력할 때, 여러 번 따옴표를 사용하거나 문자열을 연결하는 번거로움을 줄여준다.
  3. 복잡한 문장을 간편하게 구성할 수 있다.
  4. % 연산자를 이용한 포맷팅 (구 버전):
  5. 단일 값 삽입: 문자열 내부에 %s (문자열), %d (정수), %f (실수) 등의 포맷 코드를 사용하고, 문자열 뒤에 %와 삽입할 값을 붙인다.
  • 예시: 'I ate %d apples.' % 3'I ate 3 apples.'를 출력한다.
  1. 여러 값 삽입: 여러 개의 값을 삽입할 때는 포맷 코드 뒤에 괄호 ()로 묶은 튜플 형태로 값을 전달한다.
  • 예시: 'I ate %d apples. so I was sick for %d days.' % (10, 3)'I ate 10 apples. so I was sick for 3 days.'를 출력한다.
  1. %s의 활용: %s는 모든 자료형(숫자, 문자열 등)을 문자열로 변환하여 삽입할 수 있어 가장 간편하게 사용된다.
  2. 변수 이름으로 삽입: % 뒤에 딕셔너리 형태로 변수 이름을 지정하여 값을 삽입할 수 있다.
  • 예시: 'My name is %(name)s. Age is %(age)d.' % {'name': '이시영', 'age': 3}
  1. f-string 포맷팅 (Python 3.6 이상):
  2. 문자열 앞에 f를 붙이고, 문자열 내부에 {변수명} 형태로 변수를 직접 삽입한다.
  3. 예시: name = '인트', f'아, 이름은 {name}입니다.''아, 이름은 인트입니다.'를 출력한다.
  4. f-string은 기존 포맷팅 방식보다 간결하고 직관적이다.

3.5. 문자열 정렬 및 공백 처리

  1. 정렬 및 공백:
  2. %10s와 같이 숫자를 사용하여 문자열의 전체 길이를 지정하고 공백을 추가할 수 있다.
  • 예시: '%10s' % 'hi'는 10칸을 확보하고 오른쪽에 'hi'를 정렬한다.
  1. - 기호를 사용하여 왼쪽 정렬을 할 수 있다.
  • 예시: %-10s' % 'hi'는 10칸을 확보하고 왼쪽에 'hi'를 정렬한다.
  1. 소수점 표현:
  2. %0.4f와 같이 사용하여 실수의 소수점 자릿수를 제한할 수 있다.
  • 예시: '%.4f' % 3.421342343.4213을 출력한다. (소수점 넷째 자리까지)
  1. 이 기능은 실제 개발에서 자주 사용되므로 기억해두는 것이 좋다.

3.6. 문자열 관련 함수

  1. count():
  2. 문자열 내에서 특정 문자가 몇 개 포함되어 있는지 개수를 세어 반환한다.
  3. 예시: 'hobby'.count('b')는 2를 반환한다.
  4. find():
  5. 문자열 내에서 특정 문자가 처음으로 나타나는 인덱스(위치)를 반환한다.
  6. 예시: 'hobby'.find('b')는 2를 반환한다. (0부터 시작하여 첫 'b'의 위치)
  7. 찾는 문자가 문자열에 없으면 -1을 반환한다.
  8. find() 함수는 조건문(if)과 결합하여 특정 문자의 존재 여부에 따라 다른 처리를 할 때 유용하게 사용된다.
  9. index():
  10. find()와 유사하게 특정 문자의 인덱스를 반환하지만, 찾는 문자가 없으면 오류(Error)를 발생시킨다.
  11. find()가 더 편리하게 사용될 수 있다.
  12. split():
  13. 문자열을 특정 구분자(delimiter)를 기준으로 나누어 리스트(List) 형태로 반환한다.
  14. 구분자를 지정하지 않으면 공백(띄어쓰기, 탭, 줄 바꿈 등)을 기준으로 나눈다.
  15. 예시: 'a b c d'.split()['a', 'b', 'c', 'd']를 반환한다.
  16. 특정 문자를 기준으로 나눌 수도 있다.
  17. split()은 문자열보다는 리스트를 배울 때 더 많이 활용된다.
  18. upper() / lower():
  19. upper(): 문자열의 모든 문자를 대문자로 변환한다.
  20. lower(): 문자열의 모든 문자를 소문자로 변환한다.
  21. strip():
  22. 문자열 양쪽 끝의 공백(띄어쓰기, 탭, 줄 바꿈 등)을 제거한다.
  23. replace():
  24. 문자열 내의 특정 문자열을 다른 문자열로 교체한다.
  25. 예시: 'Life is too short'.replace('Life', 'Your')'Your is too short'를 출력한다.

4. 리스트 자료형

4.1. 리스트의 개념 및 생성

  1. 리스트의 필요성:
  2. 여러 개의 값을 하나의 변수로 효율적으로 관리하기 위해 사용된다.
  3. 예시: 출석부처럼 여러 학생의 이름을 관리할 때, 각 이름을 개별 변수로 관리하는 것보다 리스트로 묶어 관리하는 것이 편리하다.
  4. 리스트는 서랍장처럼 여러 값을 순서대로 담을 수 있는 자료 구조이다.
  5. 리스트 생성:
  6. 대괄호([]) 안에 쉼표(,)로 구분하여 요소들을 넣어 생성한다.
  7. 예시: a = [1, 2, 3]
  8. 다양한 요소 포함: 리스트는 빈 리스트, 숫자, 문자열 등 다양한 자료형의 요소를 포함할 수 있으며, 리스트 안에 또 다른 리스트를 포함하는 것도 가능하다.
  • 예시: [1, 'a', [4, 5]]
  • 리스트 안에 리스트를 넣는 것은 무한히 가능하다.

4.2. 리스트 인덱싱과 슬라이싱

  1. 인덱싱:
  2. 문자열 인덱싱과 동일하게 대괄호([]) 안에 인덱스 번호를 넣어 특정 요소에 접근한다.
  3. 예시: a = [1, 2, 3]일 때 a[0]은 1을 출력한다.
  4. 리스트 내의 리스트 요소에 접근할 때는 인덱스를 연달아 사용한다.
  • 예시: a = [1, 2, [3, 4]]일 때 a[2][0]은 3을 출력한다.
  1. 음수 인덱스도 문자열과 동일하게 뒤에서부터 접근한다.
  2. 슬라이싱:
  3. 문자열 슬라이싱과 동일하게 [시작인덱스:끝인덱스] 형태로 사용한다.
  4. 예시: a = [1, 2, 3, 4, 5]일 때 a[0:3][1, 2, 3]을 출력한다.
  5. 리스트 연산:
  6. 리스트 연결(덧셈): + 기호를 사용하여 두 리스트를 연결하여 새로운 리스트를 생성한다.
  • 예시: [1, 2, 3] + [4, 5, 6][1, 2, 3, 4, 5, 6]을 출력한다.
  1. 리스트 반복(곱셈): * 기호와 숫자를 사용하여 리스트를 여러 번 반복하여 새로운 리스트를 생성한다.
  • 예시: [1, 2, 3] * 2[1, 2, 3, 1, 2, 3]을 출력한다.

4.3. 리스트 값 수정 및 삭제

  1. 값 수정:
  2. 특정 인덱스의 값을 변경할 수 있다.
  • 예시: a = ['박주하', '문제송림']일 때 a[0] = '한재성'['한재성', '문제송림']으로 변경한다.
  1. 슬라이싱을 이용하여 여러 개의 값을 한 번에 변경할 수 있다.
  • 예시: a[0:2] = ['김정현', '스톱모션맨']a의 0번부터 2번 미만까지의 요소를 교체한다.
  1. 값 삭제:
  2. 슬라이싱을 이용하여 빈 리스트로 교체함으로써 요소를 삭제할 수 있다.
  • 예시: a[0:2] = []는 0번부터 2번 미만까지의 요소를 삭제한다.
  1. del 키워드를 사용하여 특정 인덱스의 요소를 삭제할 수 있다.
  • 예시: del a[0]a의 0번 인덱스 요소를 삭제한다.

4.4. 리스트 관련 함수

  1. append():
  2. 리스트의 맨 마지막에 새로운 요소를 추가한다.
  3. 예시: a = [1, 2, 3]일 때 a.append(4)[1, 2, 3, 4]로 만든다.
  4. sort():
  5. 리스트의 요소를 정렬한다.
  6. 문자열의 경우 가나다순 또는 알파벳순으로, 숫자의 경우 크기 순으로 정렬한다.
  7. 예시: a = [3, 1, 2]일 때 a.sort()[1, 2, 3]으로 만든다.
  8. reverse():
  9. 리스트의 요소 순서를 뒤집는다.
  10. 예시: a = [1, 2, 3]일 때 a.reverse()[3, 2, 1]로 만든다.
  11. index():
  12. 리스트 내에서 특정 값의 인덱스(위치)를 반환한다.
  13. 예시: a = [1, 2, 3]일 때 a.index(2)는 1을 반환한다.
  14. insert():
  15. 특정 인덱스에 새로운 요소를 삽입한다. (append()는 맨 뒤에 추가)
  16. 예시: a = [1, 2, 3]일 때 a.insert(0, '사랑')['사랑', 1, 2, 3]으로 만든다.
  17. remove():
  18. 리스트 내에서 가장 먼저 나오는 특정 값을 제거한다.
  19. 예시: a = [1, 2, 1]일 때 a.remove(1)[2, 1]로 만든다.
  20. pop():
  21. 리스트의 맨 마지막 요소를 끄집어내고, 해당 요소를 리스트에서 제거한다.
  22. 예시: a = [1, 2, 3]일 때 a.pop()은 3을 반환하고, a[1, 2]가 된다.
  23. count():
  24. 리스트 내에서 특정 요소가 몇 개 포함되어 있는지 개수를 세어 반환한다.
  25. 예시: a = [1, 2, 1]일 때 a.count(1)은 2를 반환한다.
  26. extend():
  27. 다른 리스트를 현재 리스트의 맨 뒤에 추가하여 확장한다.
  28. + 연산자와 유사하지만, extend()는 기존 리스트를 직접 변경한다.
  29. 예시: a = [1, 2]일 때 a.extend([3, 4])a[1, 2, 3, 4]로 만든다.

5. 마무리 및 과제

  1. 자료형 복습:
  2. 자료형은 값의 타입을 구분하며, 1 + 1이 문자열일 경우 '11'이 될 수 있음을 다시 강조한다.
  3. 변수는 값을 담는 상자이며, 수학의 등호와는 다른 의미로 사용된다.
  4. 숫자형은 정수, 실수 등이 있으며 사칙연산, 몫, 나머지, 제곱 연산이 가능하다.
  5. 문자열은 다양한 따옴표로 만들 수 있고, 이스케이프 문자를 통해 여러 줄 표현이 가능하다.
  6. 문자열은 연결(+) 및 반복(*)이 가능하며, 인덱싱과 슬라이싱을 통해 특정 부분을 다룰 수 있다.
  7. 문자열 포맷팅, 정렬, 공백, 소수점 표현 방법도 학습했다.
  8. count(), find(), index(), split(), upper(), lower(), strip(), replace() 등 다양한 문자열 함수를 배웠다.
  9. 리스트는 여러 값을 한 번에 관리하는 자료 구조이며, 다양한 자료형을 포함할 수 있다.
  10. 리스트도 인덱싱, 슬라이싱, 곱하기, 값 수정 및 삭제가 가능하다.
  11. append(), sort(), reverse(), index(), insert(), remove(), pop(), count(), extend() 등 리스트 관련 함수들을 학습했다.
  12. 학습 목표:
  13. 오늘 배운 내용은 모두 외울 필요는 없으며, '이런 기능이 있었구나' 하고 기억해두면 나중에 필요할 때 구글링을 통해 찾아 쓸 수 있다.

파이썬 3강 바로가기

 

반응형