Stargazer

[Python] 모두가 쉬운 파이썬 - 자료형 (강좌/강의) 본문

프로그래밍/Python

[Python] 모두가 쉬운 파이썬 - 자료형 (강좌/강의)

COM2IT 2021. 1. 1. 22:20
반응형

 

안녕하세요? 이번에 새롭게 돌아온,  언제나 모두가 쉬운 IT를 만들고자 노력하는 COM2IT 입니다.

 

우선 파이썬 강좌를 하지 못하고 개인적인 사정으로 계속 미뤄왔던 것에 대해 죄송합니다...

 

이전에 이어서 다시 새로운 맘으로 시작 해보도록 하겠습니다.

IDLE 창을 열어서 직접 실습 하시면서 들으시면 좋습니다!

 

우선 파이썬의 자료형은 무척 많습니다. 형태에 따라서 하나하나 살펴 보도록 하겠습니다.


1. 숫자형

 

숫자형은 기본적으로 1, 12, 923 와 같은 정수형이나

0.1, 3.88 과 같은 실수형,

0o234, 0o1 이나 0xF2 0xAE 로 표현되는 8진수, 16진수 형, (0과 숫자 사이의 문자는 각각 o(오), x(엑스) 입니다)

3+2j , 12 - 4j 와 같은 복소수형이 있습니다. (복소수 형태일 때는 허수 부분에 j(제이)를 붙여야합니다.)

 

숫자형 같은 경우 사칙연산은 기본으로 사용이 가능합니다.

1
2
3
4
5
6
7
8
9
10
11
>>> a = 3
>>> b = 17
>>> a+b
20
>>> a-b
-14
>>> a/b
0.17647058823529413
>>> a*b
51
>>> 
cs

 

이외로 나머지(%),  몫(//), 제곱(**) 연산자도 존재합니다.

1
2
3
4
5
6
7
>>> b%a
2
>>> b//a
5
>>> b**a
4913
>>> 
cs

 

 이외로 나머지(%),  몫(//), 제곱(**) 연산자도 존재합니다.

위 예제에서 17을 3으로 나눈 나머지는 2, 몫은 5라고 나와 있고,

b의 a승은 4913 이라는 걸 알 수 있습니다.


2. 문자열 자료형

 

문자열이란 문자의 집합을 의미합니다.

 

1
2
3
4
5
6
7
8
>>> a = "Hello world"
>>> b = "123 is my number"
>>> c = 'this is string, too'
>>> d = """
Life is too short,
you need python
"""
>>> 
cs

 

기본적으로 큰 따옴표(") 사이에 들어가고 작은 따옴표(') 로도 사용이 가능합니다.

그리고 한 줄 이상의 문자열을 쓸 때에는 종류 상관없이 따옴표 세개를 이어붙인 후 사용합니다.

다음 따옴표 세개가 나올 때까지 그 사이의 모든 문자를 문자열로 저장합니다.

 

근데 만약 내가 따옴표를 문자로 저장하고 싶다면 2가지 방식이 있습니다

1. 다른 종류의 따옴표로 감싸기

2. 백슬레시(\) 를 사용해서 따옴표를 문자열에 포함시키기(이스케이프 문자)

 

1
2
3
4
5
6
>>> a = "He's name is John"
>>> b = ' "you have to do it"  said sarah '
>>> a
"He's name is John"
>>> b
' "you have to do it"  said sarah '
cs

우선 첫번째 방법은 간단합니다.

만약 내가 작은 따옴표를 문자로 지정하고 싶다면

큰따옴표를 감싸면 된다. 가령 예를 들면

"He's name is John" 이런식

 

반대로 큰 따옴표를 넣고 싶다면 작은 따옴표로 감싸면 됩니다.

' "you have to do it"  said sarah'  (결과) : "you have to do it" said sarah 

 

그런데 두개 다 입력하고 싶을 때가 있다 그럴 때는 두번째 방법을 사용합니다.

 

 

1
2
3
4
>>> c = "\"He\'s name is  John\" said sarah"
>>> c
'"He\'s name is  John" said sarah'
>>> 
cs

 

두번째 방법은 백슬래시를 사용해서 문자열에 이스케이프 문자로 넣는 방법입니다.

사용법은 \' , \" 와 같이  백슬래시 다음에 따옴표를 넣으면 됩니다.

" \"He\'s name is  John\" said sarah" (결과) : "He's name is John" said sarah

위 예제 결과에서는 따옴표 구분을 위해 이스케이프 문자 표시를 해서 출력을 하지만 실제로는 잘 입력됬으니 걱정 마세요.

 

아래에는 자주 쓰이는 이스케이프 문자의 종류를 적어놓은 표입니다.

 

이스케이프 문자 용도
\" 겹따옴표 자체를 문자열로 지정할때
\' 홑따옴표 자체를 문자열로 지정할때
\\ 백슬래시 자체를 문자열로 지정할때
\n 줄을 다음 줄로 바꿔서 출력할때
\t 탭 간격을 출력할때

 

파이썬에서는 문자열 또한 연산이 가능합니다..

바로 덧셈 연산과 곱셈 연산입니다.

1
2
3
4
>>> first = "Hello"
>>> last = " World!"
>>> first + last
'Hello World!'
cs

위의 예제 처럼 두 문자열 사이에 덧셈기호를 입력하면 두 문자열이 합해서 반환한다.

1
2
>>> first * 4
'HelloHelloHelloHello'
cs

위의 예제 처럼 문자열에 자연수를 곱하면 그 횟수를 반복한 문자열을 반환한다.

 

 

또한 문자열은 문자의 나열입니다. 

각각의 문자를 접근하는 방법이 있는데, 그걸 바로 인덱싱(indexing) 이라고 합니다.

이후에 나올 자료형인 리스트(list)에서도 나오는 기법인데요.

 

문자열의 첫번째 문자는 인덱스가 0부터 시작하고, 인덱스는 문자열의 길이-1 까지 있습니다.

 

1
2
3
4
5
6
7
>>> a = "Life is too short, You need Python"
>>> a[3]
'e'
>>> a[5]
'i'
>>> a[-1]
'n'
cs

 

위 예제를 보면 인덱스가 0부터 시작하니까 a[3]는 4번째 문자인 e 가 됩니다.

인덱스 중에 -1이라 되있는 것이 있는데 인덱싱 할때 음수를 넣으면 뒤에서 몇 번째라는 의미입니다.

여기서는 뒤에서 첫번째 문자니까 n 이됩니다.

 

다음으로 중간에 문자열을 떼오는 방법이 있는데, 그걸 바로 슬라이싱(Slicing) 이라고 합니다.

위와 동일하게 리스트(list)에도 적용이 되는 기법입니다.

 

1
2
3
4
5
6
7
8
9
>>> a = "Life is too short, You need Python"
>>> a[0:4]
'Life'
>>> a[19:]
'You need Python'
>>> a[:17]
'Life is too short'
>>> a[:]
'Life is too short, You need Python'
cs

사용 방법은 [시작 인덱스:끝 인덱스] 이고,

슬라이싱되는 범위는 (시작 인덱스 ≤ x < 끝 인덱스) 입니다.

위의 예제에서 a[0:4]는 인덱스 0 ~ 3인 문자를 슬라이싱해서 가지고 옵니다.

만약 인덱스 부분을 비우면 가장 끝부터라는 의미 입니다.

 

따라서 2번재 예제에서 보면 19에서 부터 끝까지 라는 의미이고,

3번째는 첨부터 17까지 라는 의미입니다.

그렇다면 마지막은 첨부터 끝까지라는 의미겠죠? 

참고로 마이너스 인덱스도 사용이 가능합니다.

 

추가로 문자열의 길이를 구하는 함수는 len() 입니다.

1
2
3
>>> start = "Life is too short, You need Python"
>>> len(start)
34
cs

↑ 예시 ( 보이는 것처럼 총 내부 글자 수의 길이를 구합니다.)

 


3. 반복 가능 자료형

 

반복가능 자료형이라 함은 반복문을 사용할 때 순차적으로 요소 하나하나 씩 접근 가능한 자료형을 말합니다.

반복가능 자료형에는 리스트, 튜플, 딕셔너리, 집합이 있습니다.

 

1) 리스트(list)는 임의의 자료형들의 모음(집합) 입니다.

 

리스트는 각각의 요소에 접근하기 위해 인덱스를 가지고 있습니다. 따라서 위에서 언급한 인덱싱과 슬라이싱 기법 또한 가능합니다.

 

사용법은 [ 값1, 값2, ....]  과 같이 대괄호([]) 사이에 값을 입력하고 콤마(,)로 각각의 요소를 구분해서 입력하면 됩니다.

추가로 리스트의 요소로는 모든 자료형이 가능합니다. 숫자형, 문자형, 반복 자료형, 불 자료형 모두 리스트 자신의 요소로 넣을 수 있습니다.

1
2
3
4
5
6
7
8
9
10
>>> a = [1,2,3]
>>> b = [1,2,[1,2]]
>>> c = [1,'a',b]
>>> a
[123]
>>> b
[12, [12]]
>>> c
[1'a', [12, [12]]]
 
cs

↑ 사용의 예시

 

리스트도 동일하게 덧셈과 반복곱셈이 가능합니다.

1
2
3
4
5
6
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a+b
[123456]
>>> a*3
[123123123]
cs

 

또한 len()을 통해서 리스트의 요소의 개수를 구할 수 있습니다.

 a = [1,2,3], b= [1,2,[1,2]] ,c = [1,'a',b] 일때 한 결과는 다음과 같습니다.

1
2
3
4
5
6
>>> len(a)
3
>>> len(b)
3
>>> len(c)
3
cs

a 는 숫자형 요소 3개라서 3

b는 숫자형 2개, 리스트 1개 라서 3개

 

c는 약간 헷갈릴 수 있는데, 리스트 요소로 숫자형 1개, 문자형 1개, 그리고 변수 1개입니다.

 

변수 파트에서 언급 했듯이 변수라는 것은 값이 들어있는 메모리에 대해 이름을 붙인 것과 같습니다.

따라서 제가 만약 b의 값을 변경하면 c[2]값 또한 변합니다. 왜냐하면 변수 b가 요소인 리스트 이므로 b 내용이 바뀌었기 때문입니다.

또한 리스트는 요소의 추가, 수정, 삭제가 가능합니다.

 

1
2
3
4
5
6
7
8
9
10
11
>>> a = [1,2,3]
>>> a.append(4)
>>> a
[1234]
>>> a[1= 100
>>> a
[110034]
>>> del a[2]
>>> a
[11004]
>>> 
cs

위에서 보면 append(값) 함수를 통해서 원하는 값을 추가합니다.

수정은 인덱싱을 통해서 "a[x] = 값"의 형식으로 직접 값을 수정합니다.

삭제는 del a[x] 의 형식으로 요소를 삭제합니다.

 

중간에 값을 삽입 하고 싶을 때는 "insert(위치, 값)" 함수를 사용합니다.

사용법은 첫번째 인수로 원하는 인덱스 위치 값을 주고, 두번째 인수에 삽입하기 원하는 값을 입력합니다.

 

1

2

3

4

5

>>> a = [1,2,3]

>>> a.insert(1,100)

>>> a

[110023]

>>> 

cs

위 예제 에서는 a[1] 에다가 100을 삽입한 모습입니다.

원래 a[1] 값부터 끝까지 값은 다 뒤로 밀린 모습입니다.

 

2) 튜플(Tuple)은 리스트의 상수(constant)화 라고 생각하면 이해하기 쉽습니다.

리스트와 동일한데, 값 추가 및 수정과 요소 삭제가 불가능 합니다. 

 

값에 영향을 주는건 아예 불가능 한데 비해, 접근하는 것은 리스트와 동일 합니다.

인덱싱, 슬라이싱, 더하기, 곱하기가 가능합니다.

 

1
2
3
4
5
6
7
8
9
10
11
>>> a = (1,2,3)
>>> b = (4,5,[6,7])
>>> a[2]
3
>>> b[1:3]
(5, [67])
>>> a + b
(12345, [67])
>>> a * 3
(123123123)
 
cs

 

3) 딕셔너리(Dictionary)는 키와 값의 쌍을 요소로 갖는 자료형입니다.

이 자료형 같은 경우 어떤 단어의 뜻을 나타내는 사전과 같이 (ex. person = 사람)

키를 통해서 값에 접근할 수 있습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
>>> info = {'name''com2it''age''23'}
>>> info['name']
'com2it'
>>> info['sex'= "male"
>>> info
{'name''com2it''age''23''sex''male'}
>>> info['age'= 22
>>> info
{'name''com2it''age'22'sex''male'}
>>> del info['age']
>>> info
{'name''com2it''sex''male'}
cs

기본적인 정의법은 "a = {키1:값1, 키2:값2, 키3:값3, ...}" 의 방식으로 사용합니다.

그리고 접근 방식은 "a[원하는 키]" 처럼 키값을 입력하면 그에 해당하는 값을 반환합니다.

 

요소 추가는" a[새로운키] = 값 " 처럼 딕셔너리 내에 입력된 키가 아닌 새로운 키를 인덱싱하고 값을 대입 하면 됩니다. 

요소 수정은 리스트와 같이 "a[접근하려는 키] = 새로운 값" 수정하려는 키에 접근하여 새로운 값을 대입 하면 됩니다.

요소 삭제는 리스트와 동일 하게 "del a[삭제하려는 키] " 의 방식으로 사용합니다.

 

4) 집합(Set)은 고등학교 수학에서 배운 집합의 개념과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> a = set([1,2,3])
>>> a
{123}
>>> b = set ([2,3,4])
>>> a & b    #교집합
{23}
>>> a | b    #합집합
{1234}
>>> a-b     #차집합1
{1}
>>> b-a     #차집합2
{4}
>>> list_a = list(a)    #list로 변환
>>> list_a
[123]
cs

 

↑ 정의와 교집합,합집합,차집합 및 리스트 변환 예제

 

특징은 중복되는 요소가 없고, 각 요소의 순서가 없습니다.

그리고 교집합, 합집합, 차집합 같은 연산을 할 수 있습니다.

또한 순서가 없어서 인덱싱으로 값에 접근 할 수 없습니다.

그렇다면 어떻게 접근 해야 할까요? 

집합을 리스트의 형태로 변환 후에 접근이 가능합니다. 

리스트로 변환 후에 인덱싱을 통해 접근이 가능합니다.

 

근데 과연 집합은 어디에 사용할까요?

집합은 요소간 중복이 안되는 점을 이용해서 자료형 내부에

해당 요소가 최소 1개이상 존재하는지 여부를 파악할 때 사용할 수 있습니다.

 

그런데 여기서 든 의문은 개별 접근이 안되는데 어떻게 사용하냐입니다.

그건 반복자료형이라는 말에 힌트가 있습니다.

반복문을 사용하므로써 각각의 요소를 꺼내오는 방식으로 사용합니다.

이는 이후 반복문에서 알아보겠습니다.


4. 불 자료형

 

불(bool)은 참 아니면 거짓을 갖는 자료형입니다.

1
2
>>> male = True
>>> adult = False
cs

이 자료형 같은 경우 조건식을 갖는 제어문에서 자주 사용하는 자료형입니다.

크게 어려운 자료형은 아닌데 위 자료형 분류에는 맞지 않아서 따로 분류했습니다.

 

지금까지 파이썬에서 사용하는 자료형에 대하여 알아 보았습니다.

다음 시간에는 함수와 메소드(각 자료형에서 자주 사용하는 메소드등)에 대해서 알아보겠습니다.

반응형
Comments