TigerCow.Door


안녕하세요. 문범우입니다.

이번에는 파이썬에서 집합 자료형에 대한 이야기를 하겠습니다.

해당 포스팅으로 자료형에 대한 이야기가 마무리 될 예정이며 이후에는 조금 더 빠르게 진도를 나가려 합니다. :)

그 동안 쉬엄쉬엄 조금씩 했더니 너무 느리게 진행되고 있다는걸 최근에서야 깨달은 것 같아서요.

빠르게 기본 개념을 학습하고, 예제를 풀며 심화학습하는 방식으로 진행하겠습니다.



1. 집합 자료형


집합 자료형과 리스트를 혼동하시는 분들도 있는데, 분명히 다른 자료형입니다.

집합 자료형을 통해서 우리는 집합에 관련된 것들을 쉽게 처리할 수 있습니다.

일단 집합 자료형을 만들어 보도록 하겠습니다.

집합 자료형은 아래 사진처럼 set키워드를 통해 만들 수 있습니다.



위의 사진과 같이 set() 의 괄호안에 리스트 또는 문자열을 입력하여 집합 자료형을 만듭니다.



2. 집합 자료형의 특징


그런데, 위의 사진에서 s2라는 집합에 대해 이상한 점을 보셨나요?

우리는 분명, "Hello, world!" 라는 문장을 입력했는데 빠진 글자가 있기도 하고 순서도 엉망이 되었습니다.

이는, 집합 자료형이 가진 아래와 같은 2개의 특징이 있기 때문입니다.


- 중복을 허용하지 않는다.

- 순서가 없다.(Unordered)


우리가 앞에서 학습했던 리스트나 튜플은 순서가 있기 때문에 인덱싱의 개념도 학습하고 이를 통해 자료형의 값을 얻어낼 수도 있었습니다. 하지만 집합 자료형, set 자료형은 순서가 없기 때문에 인덱싱이 존재하지 않습니다. 물론 바로 앞에서 학습했던 딕셔너리 자료형 또한 순서가 없기 때문에 인덱싱이 존재하지 않습니다.

만약, 집합 자료형으로 만든 값에 대해서 인덱싱을 처리하고 싶다면 list() 함수를 통해 집합 자료형을 리스트 자료형, 또는 tuple() 함수를 통해 튜플 자료형으로 변환해주셔야 합니다.



3. 집합 자료형 활용하기


집합 자료형에서는 교집합이나 합집합, 차집합등을 구할 수 있습니다.

각각에 대한 개념은 기초적인 개념이라 생각하고 설명은 생략하겠습니다.


먼저 교집합을 구하기 위한 기호는 '&' 입니다.



또한 아래의 사진 처럼 intersection() 함수를 사용해도 가능합니다.




두번째, 합집합은 '|' 기호를 통해 구할 수 있습니다.

또한, union() 함수를 사용해도 됩니다.




세번째, 차집합은 '-' 기호를 통해 구합니다. 이는 difference() 함수를 사용해도 됩니다.




4. 집합 자료형 관련 함수


집합 자료형과 관련된 함수들 중에서 몇가지만 소개해드리겠습니다.

먼저 하나의 값을 추가하는 add() 함수입니다.



그리고 한번에 여러개의 값을 추가하는 update() 함수입니다.




마지막으로 특정 값을 제거하는 remove() 함수입니다.



이렇게 해서 집합 자료형에 대해 살펴보았습니다.

다음 포스팅에서는 제어문에 대한 이야기를 해보도록 하겠습니다.

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요


안녕하세요. 이번 포스팅에서는 딕셔너리 자료형에 대해서 살펴보도록 하겠습니다.


1. 딕셔너리 자료형


세상에서는 많은 대응 관계를 갖는 단어들이 있습니다. 사람을 예로 들면, "이름" = "홍길동", "생일" = "5월15일" 이런식으로 말이죠. 파이썬에서는 이러한 대응 관계를 표현하기 위해 딕셔너리(Dictionary) 자료형이 존재합니다.

다른 개발 부분에서는 연관 배열(Associative array), 해시(Hash) 라고도 부릅니다.

파이썬에서 이야기하는 딕셔너리 자료형은 말 그대로 사전과 같은 자료형 입니다. 즉, 이름에는 홍길동이, 생일에는 5월15일이 대응 되듯이 파이썬에서는 Key 와 Value가 대응됩니다.

딕셔너리 자료형에서는 앞에서 살펴본 리스트나 튜플과 달리 순차적으로 요소 값을 구하지 않고 Key에 대응되는 Value값을 얻습니다. 


이러한 딕셔너리의 기본적인 모습은 다음과 같습니다.


{Key1:Value1, Key2:Value2, Key3:Value3, ... }


Key와 Value의 여러 개의 대응 관계가 {와 }로 둘러싸여 있습니다. 각각의 요소는 Key와 Value가 대응되는, Key : Value 형식으로 되어 있으며 쉼표로 각각의 요소가 분리됩니다.


실제로 만들어보면 다음과 같습니다.



위의 dic1에서 Key는 'name', 'number', 'score' 이고 Value는 'hong', '01012345678', '58' 입니다.

또한 value에는 정수형을 비롯한 리스트 자료형을 넣을 수도 있습니다.




2. 딕셔너리 추가 및 삭제하기


먼저 위에서 언급하였듯이, 딕셔너리에서는 리스트나 튜플 자료형과 다르게 순서를 따지지 않습니다. 딕셔너리에서는 무엇이 추가되고 어떤 요소가 Key, Value로 존재하는지를 중요시합니다.


먼저 딕셔너리에 요소를 추가하는 기본 형태입니다.


dic[Key] = Value


위의 기본 상태에 따라서 딕셔너리에 요소를 추가해보겠습니다.



이번에는 딕셔너리에서 요소를 삭제하는 방법입니다.


del dic[Key]


이러한 형태를 입력하면 dic이라는 딕셔너리 자료형에서 일치하는 Key값과 Value값을 제거합니다.




3. 딕셔너리 사용하기


그럼 이러한 딕셔너리는 어디에서 사용될까요?

만약 딕셔너리가 없다고 했을 때, 5명의 이름에 대한 핸드폰 번호를 저장하는 것은 어떻게 구현해야 할까요?

깔끔하게 특정한 방법이 잘 생각나지 않습니다.

하지만 우리에게는 딕셔너리 자료형이 있기에 다음과 같이 표현할 수 있습니다.



그럼 이러한 phone_number 딕셔너리에서 person2의 핸드폰 번호를 알고 싶을땐 어떻게 할까요?

딕셔너리에서 Key를 사용하여 Value를 얻는 방법은 다음과 같습니다.



위의 사진과 같이, <딕셔너리이름>[Key] 와 같이 입력하면 해당 딕셔너리에서 Key에 대응되는 Value를 반환합니다.



4. 딕셔너리 주의사항


딕셔너리 자료형을 만들때는 몇가지 주의사항이 있습니다.

먼저, Key의 중복을 피해야 합니다.

Key를 중복으로 입력해도 오류는 발생하지 않지만 중복된 Key 중 1개를 제외한 나머지 모든 Key:Value는 무시됩니다.



두번째는 딕셔너리의 Key에 리스트를 사용하지 못하는 점입니다. 

위에서 리스트 자료형 또한 Value에 입력될 수 있다고 하였지만, Key에는 이용하지 못합니다. 딕셔너리 자료형에서 Key로 쓸 수 있는지 없는지에 대한 기준은 Key가 변하는 값인지 변하지 않는 값인지에 달려 있습니다. 지난 포스팅에서 살펴보았듯이 리스트는 변할 수 있는 자료형입니다. 따라서 리스트 자료형은 Key로써 사용하지 못합니다. 반면에 튜플 자료형은 변하지 않는 값이기에 Key로 사용될 수 있습니다.



이렇게 해서 딕셔너리 자료형에 대해서 알아보았습니다.

다음 포스팅에서는 딕셔너리 자료형에 관련된 함수들에 대해서 알아보도록 하겠습니다.



블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요


안녕하세요.

이번 포스팅에서는 튜플 자료형에 대해서 알아보도록 하겠습니다.


1. 튜플 자료형


지난 포스팅에서 리스트 자료형에 대해서 알아보았습니다. 리스트 자료형은 특정 숫자 또는 문자들이 대괄호('[',']')로 묶인 형태인데요, 튜플 자료형은 이와 다르게 소괄호('(',')')로 묶인 것입니다.

튜플은 어떻게 만들까요?

일단, 튜플은 리스트와 거의 비슷하지만 위에서 언급했던 점과 같이 약간의 차이점만 존재합니다.


- 리스트는 대괄호, 튜플은 소괄호로 둘러쌓인다.

- 리스트는 내부 요소의 생성, 삭제 및 수정이 가능하지만 튜플은 불가능하다.


이러한 튜플은 다음과 같은 모습을 가집니다.



위의 그림에서 세번째 항목과 같이, 튜플에서는 한가지 요소만 가질때에는 하나의 요소 뒤에 콤마(,)를 반드시 붙여줘야합니다.

또한 네번째 항목과 같이 괄호를 생략한 것은 자동으로 튜플로 생성됩니다.


이러한 튜플과 리스트에 있어서 가장 큰 차이점으로는, 위에서 언급하였듯이 요소의 값을 변화시킬 수 있는가 없는가입니다.



2. 튜플 요소 값 삭제 및 변경 오류


튜플 요소 값을 삭제하려 하면 아래와 같은 오류가 발생합니다.



마찬가지로, 튜플 요소 값을 수정하려 하면 아래와 같은 오류가 발생합니다.




3. 튜플 활용하기


리스트 자료형에서 활용했던 인덱싱, 슬라이싱, 더하기, 곱하기가 튜플에서도 가능합니다.


먼저 인덱싱과 슬라이싱입니다.




그리고 튜플 더하기와 곱하기 입니다.




이렇게 해서 튜플 자료형에 대해서도 알아보았습니다.

튜플 자료형은 기본적인 차이점을 제외하고 리스트와 매우 비슷하니 함께 공부해주세요.

다음 포스팅에서는 딕셔너리 자료형에 대해서 알아보겠습니다.

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요


안녕하세요.

지난 포스팅에 이어서, 이번엔 파이썬의 숫자형과 문자열 자료형에 대해서 알아보겠습니다.

참고 서적은 박응용씨의 '점프 투 파이썬'입니다.

또한 이번 포스팅부터 실습을 진행할텐데

제가 사용하는 파이썬 버전은 Python 3.6.2 이며 에디터는 서브라임텍스트3를 사용합니다.


1. 숫자형


숫자형이란 말 그대로 숫자로 된 자료형을 말합니다. 

숫자에는 어떤 것들이 있을까요? 잘 아시다시피 정수, 실수, 복소수 그리고 8진수와 16진수 등이 있습니다.

C 언어를 예를 들면 정수형을 표현하는데 Int형을 사용하죠. 파이썬과의 차이점을 보자면, C언어의 Int형은 대략 +21억~-21억의 범위를 가집니다. 하지만 파이썬에서는 숫자형의 범위가 존재하지 않습니다.



그럼 숫자형에서 각각의 숫자들은 어떤식으로 사용이 될까요? 하나씩 간단히 확인해보도록 하겠습니다.



1-1. 정수형(Integer)


정수형은 정수를 뜻하는 자료형을 말합니다. 다음 사진을 통해 정수형을 어떤식으로 사용하는지 볼 수 있습니다.




1-2. 실수형(Floating-point)


실수형은 정수형과 달리 소수점이 포함된 숫자들입니다. 다음 사진을 통해 실수형이 저장되고 사용되는 예시를 볼 수 있습니다.




1-3. 복소수(Complex number)


복소수는 허수를 표현하는 i와 정수 및 실수가 합쳐진 숫자입니다. 이때 파이썬에서는 i를 사용하지 않고 j 또는 J를 사용합니다.



추가적으로 파이썬에서는 복소수와 관련된 내장함수를 제공하고 있습니다.



(복소수).real

복소수의 실수부분만 반환합니다.


(복소수).imag

복소수의 허수부분만 반환합니다.


(복소수).conjugate()

복소수의 켤레복소수를 반환합니다.


abs(복소수)

복소수의 절대 값을 반환합니다.



1-4. 8진수와 16진수


8진수와 16진수를 사용할때는 숫자의 앞에 몇 진수인지 표시해주는 것이 필요합니다.

8진수의 경우, 숫자가 0o(숫자 0 + 알파벳 소문자 o) 또는 0O(숫자 0 + 알파벳 대문자 O)로 시작하면 됩니다.



16진수의 경우, 숫자가 0x(숫자 0 + 알파벳 x)로 시작하면됩니다.




2. 연산자


위에서 알아본 숫자형들을 연산할때 사용하는 연산자가 있습니다.

기본적으로 사칙연산자, 제곱을 나타내는 연산자, 나머지를 반환하는 연산자, 몫을 반환하는 연산자를 알아보도록 하겠습니다.


2-1. 사칙연산자


많은이들이 알다시피 사칙연산은 더하기(+), 빼기(-), 나누기(/), 곱하기(*)를 말합니다.

파이썬에서도 역시 사칙연산을 지원하고 사용 예시는 아래 사진과 같습니다.




2-2. 제곱을 나타내는 연산자


흔히들 제곱을 나타낼 때는 ^ 기호를 쓰죠. 예를 들면 2의 3승을 나타낼때는 2^3 이런식으로 말이죠.

파이썬에서는 조금 다르게 ^ 기호 대신 **를 사용합니다. 아래의 사진을 보고 어떻게 사용하는지 확인하세요.




2-3. 나머지를 반환하는 연산자


파이썬에서 나머지를 반환하는 연산자는 %를 사용합니다.

나머지를 반환하는 연산자란, 나눗셈의 결과에서 나머지만을 반환하는 연산자를 말합니다.

예를 들어 17이란 숫자를 5로 나누면 몫은 3이고 나머지는 2입니다.

즉, 17 % 5 = 2 입니다.




2-4. 몫을 반환하는 연산자


파이썬에서 몫을 반환하는 연산자는 //를 사용합니다.

몫을 반환하는 연산자는 말 그대로 나눗셈을 진행하고 결과에서 몫만을 반환하는 연산자를 말합니다.

예를 들어, 17이란 숫자를 5로 나누면 몫은 3이고 나머지는 2입니다.

즉, 17 // 5 = 3 입니다.





3. 문자열 자료형


문자열(String) 자료형이란 문자, 단어, 숫자 등으로 구성된 모든 문자들의 집합을 말합니다.

문자열은 따옴표로만 둘러 쌓여 있으면 됩니다. 문자열을 구성하는 방법은 아래에서 자세히 확인하도록 하겠습니다.

이전에 문자열의 예시를 보면 아래 사진과 같습니다.




3-1. 문자열 만들기


그럼, 이러한 문자열 자료형은 어떻게 만들까요?

총 4가지의 방법이 있습니다. 왜 4가지 씩이나 있는지에 대해서는 아래에서 설명드리겠습니다.


단일 큰따옴표 사용하기


단일 작은따옴표 사용하기


큰따옴표 3개연속 사용하기


작은따옴표 3개연속 사용하기




3-2. 문자열 만들기 방법이 4가지인 이유


3-1에서 문자열을 만드는 4가지 방법에 대해서 알아보았습니다.

헌데 왜 4가지 씩이나 있을까요?

여러가지 이유가 있겠지만, 저자는 아래의 두가지 이유를 설명합니다.


1. 문자열 안에 따옴표를 포함시키고 싶을 때

2. 여러줄일 문자열을 변수에 대입하고 싶을 때


첫 번째 이유, '문자열 안에 따옴표를 포함시키고 싶을 때'에 대해서 보겠습니다.

만약, 'Hello, what's your name?' 을 문자열에 저장하려면 어떻게 해야할까요?

또는, "I said, "beomwoo"."를 문자열에 저장하려면 어떻게 해야할까요?

일단 한번 시도해보면 아래와 같은 오류가 뜨게 됩니다.


왜 오류가 뜰까요?

바로, 첫 번째 문장에서 작은따옴표로 문자열을 만들었는데 문자열 중간에 작은따옴표가 존재하기 때문이며

같은 이유로 두번째 문장에서는 큰따옴표로 문자열을 만들었는데 문자열 중간에 큰따옴표가 있기 때문입니다.

즉, 문자열 중간에 작은따옴표 또는 큰따옴표를 입력하기 위해 각각의 방법이 존재합니다.

그렇다면 위에서 저장하려던 문자열을 오류없이 저장하려면 어떠한 방법이 있을까요?

 'Hello, what's your name?'  대신,

"Hello, what's your name?" 및 '''Hello, what's your name?''' 및 """Hello, what's your name?""" 이 존재하고

"I said, "beomwoo"." 대신,

'I said, "beomwoo".' 및 '''I said, "beomwoo".''' 및 """I said, "beomwoo".""" 이 존재할 것입니다.


물론 추가적으로 따옴표를 사용하기 위해서 이스케이프를 이용하는 방법도 존재합니다.

이스케이프에 대해서는 두번째 이유를 확인하고 설명드리겠습니다.


두번째 이유, '여러줄인 문자열을 변수에 대입하고 싶을 때'를 보겠습니다.

문자열이 항상 한 줄으로만 존재하지는 않습니다. 예를 들어,

Hello, world!

Nice to meet you!

와 같은 문자열을 변수에 저장해야 할 수도 있습니다.

이럴땐 어떻게 할까요?

이럴 경우 작은따옴표 및 큰따옴표를 단일로 사용할 경우 오류가 발생합니다.



이럴땐 위의 사진과 같이 큰따옴표 3개 또는 작은따옴표 3개를 이용해서 문자열을 만들어야 합니다.

그런데 위의 사진에서 성공적으로 출력된 결과를 보면,

'Hello, world!\nNice to meet you!'

임을 확인할 수 있습니다.

나는 분명히 엔터를 입력해서 두 줄의 문자열을 저장했는데 출력결과는 한줄이고 가운데에 이상한 문자, \n가 삽입되어있네요?

여기서 \n가 바로 이스케이프 코드 입니다.



3-3. 이스케이프 코드


이스케이프 코드란 프로그래밍을 할 때 프로그래머가 편히 사용할 수 있도록 미리 정의해 놓은 문자의 조합입니다.

즉, 작은따옴표는 문자열을 만들때 사용될 수 있으니까 너가 작은따옴표를 문자열 안에서 사용하려면 그냥 ' 이걸로 사용하지말고 \' 이렇게 사용해. 라는 식으로 정의해둔 것 입니다.

그렇다면 위에서 확인한 \n는 어떠한 의미를 가진 이스케이프 코드일까요?

예상하신 것 처럼 enter를 의미하는 이스케이프 코드입니다.

각각의 이스케이프 코드와 그 의미를를 아래의 표로 정리하였습니다.

 코드

설명 

\n

개행(줄바꿈)

\t

수평 탭

\\

문자 "\"

\'

단일 인용부호( ' )

\"

이중 인용부호( " )

\r

캐리지 리턴

\f

폼 피드

\a

벨 소리

\b

백 스페이스

\000

널 문자



4. 문자열 연산하기


파이썬에서 볼 수 있는 또 다른 특징 중에 하나입니다.

파이썬은 다른 언어와 달리 문자열 자체를 더하거나 곱하는 연산이 가능합니다.


4-1. 문자열 더하기

문자열에서 더한다는 의미는, 두개 이상의 문자열을 이어서 붙인다는 의미로 받아들이시면 됩니다.

아래 예제를 보시면 바로 이해하실 것 입니다.



4-2. 문자열 곱하기

그렇다면 문자열 곱하기는 어떤 의미를 가질까요?

예를 들어 3 * 5 라는 연산은 3을 5번 더하는 즉, 3 + 3 + 3 + 3 + 3 으로 생각할 수 있습니다.

어느정도 이해가 되시나요? 아래 예제를 통해 바로 확인해보겠습니다.




이러한 문자열 더하기와 곱하기는 추후 에디터를 이용하면서 많이 사용될 수 있으니 간단하지만 꼭 익혀두시기를 바랍니다.



이렇게 해서 파이썬의 숫자형과 문자열 자료형의 기본적인 내용을 알아보았습니다.

다음 포스팅에서는 문자열에서 자주 사용되는, 문자열 인덱싱과 슬라이싱에 대해서 공부해보겠습니다.

내용에 대한 피드백이나 궁금한 점은 댓글을 이용해주세요 :)

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요