1. 변수란?
변수(Variable)는 간단히 말하자면 데이터를 저장할 수 있는 공간입니다. 더 엄밀히 말하자면 장치(컴퓨터)의 메모리에 데이터를 저장할 공간을 할당(allocation)하는 것을 말합니다.
파이썬에서 변수는 변수명과 값(value)으로 이루어지며, 값에 이름(변수명)을 붙여서 사용합니다.
아래는 정수형(int) 값인 10에 "N"이라는 이름을 붙인 변수 "N"을 만드는 예시입니다.
N = 10
이렇게 변수를 만드는 것을 "변수 선언"이라고 합니다.
파이썬에서 기본적으로는 어떤 종류의 값을 저장할지 미리 알려주지 않아도 됩니다. 파이썬이 실행되는 시점에서 어떤 종류의 값인지를 결정하기 때문입니다.
하지만, 필요에 따라서 어떤 종류의 값인지를 알려주기도 합니다.
아래는 정수형(int) 값인 10에 "N"이라는 이름을 붙이고, 정수형임을 알려주는(명시하는, Explicit) 변수 선언 예시입니다.
N: int = 10
이제 다양한 데이터 종류(자료형)에 대해서 알아볼 차례입니다.
2. 파이썬의 자료형
컴퓨터는 데이터를 효율적으로 다루기 위해 데이터들을 여러 종류로 분류하여 다룹니다.
이러한 분류를 자료형이라고 합니다.
파이썬의 자료형에는 숫자형, 불린형, 시퀀스형, 집합형, 매핑형 등의 다양한 자료형이 있습니다. (출처:https://docs.python.org/3/library/stdtypes.html#)
이 중 가장 기초가 되는 숫자형(int, float, complex)과 불린형(bool), 그리고 시퀀스형에 대해 알아보겠습니다.
2-1. 숫자형
숫자형에는 정수형(int), 실수형(float), 복소수형(complex)이 있습니다.
자료형(Data Type) | 저장되는 데이터 | 예시 |
정수형(int) | 정수 | 10 |
실수형(float) | 실수 | 4.7 |
복소수형(complex) | 복소수 | 3+1j |
정수형의 경우, 진법에 따라서 다른 방식으로 다룰 수도 있습니다.
진법 | 예시 |
10진법 | 10 |
2진법 | 0b1010 |
8진법 | 0o12 |
16진법 | 0xA |
예제
숫자형과 진법들을 변수에 저장하는 예제입니다.
A = 10
B = 4.7
C = 3+1j
D = 0b1010
E = 0o12
F = 0xA
숫자형 연산자
연산자 | 연산 | 설명 | 예시 | 결과 |
---|---|---|---|---|
`+` | 덧셈 | 두 숫자를 더합니다. | `3 + 2` | 5 |
`-` | 뺄셈 | 첫 번째 숫자에서 두 번째 숫자를 뺍니다. | `5 - 3` | 2 |
`*` | 곱셈 | 두 숫자를 곱합니다. | `4 * 2` | 8 |
`/` | 나눗셈 | 첫 번째 숫자를 두 번째 숫자로 나눕니다. | `10 / 2` | 5.0 |
`//` | 몫 연산 | 첫 번째 숫자를 두 번째 숫자로 나눈 몫을 반환합니다. | `10 // 3` | 3 |
`%` | 나머지 연산 | 첫 번째 숫자를 두 번째 숫자로 나눈 나머지를 반환합니다. | `10 % 3` | 1 |
`**` | 거듭제곱 | 첫 번째 숫자를 두 번째 숫자로 거듭제곱합니다. | `2 ** 3` | 8 |
`-` | 음수 변환 | 숫자의 부호를 반대로 바꿉니다. | `-5` | -5 |
`abs()` | 절대값 | 숫자의 절대값을 반환합니다. | `abs(-5)` | 5 |
`divmod()` | 몫과 나머지 | 두 숫자의 몫과 나머지를 튜플로 반환합니다. | `divmod(10, 3)` | (3, 1) |
`pow()` | 거듭제곱 | 거듭제곱을 계산합니다. | `pow(2, 3)` | 8 |
`round()` | 반올림 | 숫자를 지정된 소수점 자리까지 반올림합니다. | `round(5.678, 2)` | 5.68 |
`+=` | 더하고 대입 | 변수에 값을 더한 후 그 결과를 변수에 대입합니다. | `x += 3` | x = x + 3 |
`-=` | 빼고 대입 | 변수에서 값을 뺀 후 그 결과를 변수에 대입합니다. | `x -= 2` | x = x - 2 |
`*=` | 곱하고 대입 | 변수에 값을 곱한 후 그 결과를 변수에 대입합니다. | `x *= 4` | x = x * 4 |
`/=` | 나누고 대입 | 변수를 값으로 나눈 후 그 결과를 변수에 대입합니다. | `x /= 5` | x = x / 5 |
`//=` | 몫 대입 | 변수를 값으로 나눈 후 그 몫을 변수에 대입합니다. | `x //= 3` | x = x // 3 |
`%=` | 나머지 대입 | 변수를 값으로 나눈 후 그 나머지를 변수에 대입합니다. | `x %= 3` | x = x % 3 |
`**=` | 제곱 대입 | 변수에 값을 제곱한 후 그 결과를 변수에 대입합니다. | `x **= 2` | x = x ** 2 |
2-2. 불린형
불 자료형은 참(True)과 거짓(False), 두 개의 값을 갖는 자료형입니다.
불 자료형을 변수에 저장하는 예제입니다.
A = True
B = False
불 자료형의 경우에는 조건 연산자의 결과 값으로도 나타납니다.
예를 들어, 변수 A와 B가 존재할 때, $A > B$는 A가 B보다 크다면 참(True), 그렇지 않다면 거짓(False)의 값을 갖습니다.
A 값이 3이고 B 값이 5라면, $3 > 5$를 의미하는 것이 되며, 이는 거짓(False)입니다.
2-3. 시퀀스형
시퀀스(Sequence)형은 요소들을 순서대로 저장하는 데이터 구조를 말합니다. 시퀀스형은 여러 기능을 공유하며, 이들 중 대부분은 반복 가능하고, 개별 요소에 접근할 수 있습니다.
인덱스(index)는 파이썬과 다른 프로그래밍 언어에서 배열이나 리스트와 같은 시퀀스형 데이터 구조 내부의 특정 요소에 접근하기 위해 사용되는 숫자입니다. 인덱스를 통해 특정 위치에 있는 요소에 접근할 수 있으며, 이는 데이터를 효율적으로 관리하고 활용하는 데 중요한 역할을 합니다.
인덱스는 0부터 시작되므로, [1, 2, 3] 리스트에서 인덱스가 0인 값은 1이며, 인덱스가 2인 값은 3입니다.
주요 시퀀스형에는 리스트(list), 튜플(tuple), 레인지(range), 문자열(string) 등이 있습니다. 각각의 특징과 사용 방법을 살펴보겠습니다.
자료형 | 특징 | 예시 |
리스트(list) | 내용을 변경할 수 있습니다(가변성) | [2, 4, "HI", 3.7] |
튜플(tuple) | 리스트와 유사하지만 내용을 변경할 수 없습니다(불변성) | (3, 5, "ABC", 9.9) |
문자열(string) | 텍스트를 저장하며 내용을 변경할 수 없습니다(불변성) | "string Example" |
레인지(range) | 숫자로 이루어지며 내용을 변경할 수 없습니다. | range(0, 25, 5) |
2-3-1. 리스트(list)
값을 추가, 제거, 변경할 수 있다는 특징이 있는 시퀀스 자료형입니다. 리스트 내에 여러 종류의 자료형이 동시에 존재할 수 있습니다. 예를 들어 리스트안에 정수형, 실수형, 복소수형, 심지어는 리스트형까지 존재할 수 있습니다.
아래 표는 리스트의 다양한 기능들을 정리한 표입니다.
기능 이름 | 설명 | 예시 | 예시 결과 |
리스트 변수 선언(할당) | 리스트를 생성합니다. | A = [1, 2, 3] | [1, 2, 3] |
리스트 더하기(+) | 리스트 내용을 합칩니다. | [1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] |
리스트 반복하기(*) | 리스트 내용을 반복하여 새로운 리스트를 만듭니다. | [1, 2] * 2 | [1, 2, 1, 2] |
리스트 길이 구하기(len) | 리스트 내에 존재하는 요소 개수를 구합니다. | len([1, 2, 3]) | 3 |
요소 수정 | 특정 위치의 요소를 변경합니다. 요소의 위치는 0부터 시작합니다. |
A = [1, 2] A[0] = 3 |
[3, 2] |
요소 추가(append) | 새로운 요소를 리스트 끝에 추가합니다. | A = [1] A.append(2) |
[1, 2] |
요소 삭제(del) | 요소를 삭제합니다. | A = [1] del A[0] |
[ ] |
슬라이싱 | 일부분을 선택하여 새로운 리스트를 생성합니다 | A = [1, 2, 3, 4] B = [1 : 3] |
[2, 3, 4] |
리스트 슬라이싱 예제를 추가적으로 첨부하겠습니다.
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 인덱스 2부터 5까지의 요소 선택 (5는 포함되지 않음)
slice1 = numbers[2:5] # 결과: [2, 3, 4]
# 시작 인덱스 생략시 리스트의 처음부터 시작
slice2 = numbers[:5] # 결과: [0, 1, 2, 3, 4]
# 종료 인덱스 생략시 리스트의 끝까지 선택
slice3 = numbers[5:] # 결과: [5, 6, 7, 8, 9]
# 스텝을 2로 지정하여 하나 건너 요소 선택
slice4 = numbers[0:10:2] # 결과: [0, 2, 4, 6, 8]
# 음수 인덱스 사용
slice5 = numbers[-4:-1] # 결과: [6, 7, 8]
2-3-2. 튜플
튜플(Tuple)은 생성 후 내부 요소의 수정이 불가하며, 이로 인해 데이터의 안정성을 보장할 수 있습니다.
기능 이름 | 설명 | 예시 | 예시 결과 |
튜플 변수 선언(할당) | 튜플을 생성합니다. | A = (1, 2, 3) | (1, 2, 3) |
튜플 더하기(+) | 튜플 내용을 합칩니다. | (1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) |
튜플 반복하기(*) | 튜플 내용을 반복하여 새로운 튜플을 만듭니다. | (1, 2) * 2 | (1, 2, 1, 2) |
튜플 길이 구하기(len) | 튜플 내에 존재하는 요소 개수를 구합니다. | len((1, 2, 3)) | 3 |
슬라이싱 | 일부분을 선택하여 새로운 튜플을 생성합니다 | A = (1, 2, 3, 4) B = A[1 : 3] |
(2, 3) |
2-3-3. 문자열
문자열(String)은 문자들의 연속된 나열을 말합니다. 작은 따옴표(') 또는 큰 따옴표(")로 감싸서 표현합니다.
문자열 내에서 줄바꿈(개행)을 표현하려면, "\n"을 삽입합니다.
문자열에도 여러 기능이 존재합니다.
기능 이름 | 설명 | 예시 | 예시 결과 |
문자열 변수 선언(할당) | 문자열을 생성합니다 | A = "HI777" | "HI777" |
문자열 더하기(+) | 문자열 내용을 합칩니다 | "HI" + "777" | "HI777" |
문자열 반복하기(*) | 문자열 내용을 반복하여 새로운 문자열을 만듭니다. | "777" * 3 | "777777777" |
문자열 길이 구하기(len) | 문자열 길이를 구합니다. | A = "123456" B = len(A) |
6 |
슬라이싱 | 일부분을 선택하여 새로운 문자열을 생성합니다 | A = "Hello" B = A[1:3] |
"el" |
문자열 쪼개기(split) | 문자열을 일정한 기준으로 나눠 리스트에 담습니다. 기본적으로는 공백(White Space) 기준으로 나눕니다. | A = "A B CD" B = A.split() |
["A", "B", "CD"] |
2-3-4. 레인지
레인지(Range) 타입은 특정 범위의 정수들을 생성하기 위해 사용됩니다. 이는 보통 반복문에서, 특히 for 문에서 사용되어 지정된 범위에 대해 반복 실행할 때 매우 유용합니다. range 객체는 지연 생성(lazy generation)을 통해 메모리를 효율적으로 사용합니다. 즉, 필요할 때만 그 다음 숫자를 생성하여 반환합니다.
range 객체를 생성하는 기본 구문입니다.
구문 | |
range(stop) | 0부터 stop-1까지의 정수를 생성합니다. |
range(start, stop) | start부터 stop-1까지의 정수를 생성합니다. |
range(start, stop, step) | start부터 stop-1까지 step 간격으로 정수를 생성합니다. |
아래는 레인지 타입을 반복문에서 사용하는 예시이며, 반복문에 대한 내용은 추후에 더 다루겠습니다.
# 0부터 4까지의 숫자를 생성
for i in range(5):
print(i)
# 1부터 9까지 2씩 증가하는 숫자를 생성
for i in range(1, 10, 2):
print(i)
'컴퓨터 언어 > 초보자를 위한 파이썬' 카테고리의 다른 글
[초보자를 위한 파이썬] 6화 - 반복문 (0) | 2024.09.04 |
---|---|
[초보자를 위한 파이썬] 5화 - 조건문 (4) | 2024.09.01 |
[초보자를 위한 파이썬] 4화 - 예제 문제 (0) | 2024.08.31 |
[초보자를 위한 파이썬] 3화 - 입출력 (0) | 2024.08.31 |
[초보자를 위한 파이썬] 1화 - 소개 및 설치 (1) | 2024.08.30 |