본문 바로가기

프로그래밍/파이썬

집합(set), 시퀀스(sequence), 매핑(mapping)


파이썬으로 배우는 수학적 프로그래밍(알란 M.스테이블리 지음)을 참고했습니다.
파이썬의 기초 내용에 좀 더 보태 정리한 내용이니 오류 지적은 달게 받겠습니다.


집합(set)

                 

집합 자료형의 특징

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

 2. 순서가 없다(Unrordered)




집합은 다양한 것들이 순서 없이 모여 있는 모임
     EX) 전화번호의 모든 번호, 이름에서 차례로 된 문자

다중집합(multi-set)

다중 집합은 집합과 비슷하지만, 집합 내 모든 원소가 다를 필요가 없다. 즉 어떤 원소가 하나 이상일 수 있다.

하지만 순서가 없다는 것은 집합과 공통점이다.

온도를 관찰한 데이터 모임이 다중집합이라고 할 수 있다. 

1980년도의 평균온도와 1981년도의 평균 온도가 같을 수 있다.


대신 관측 순서가 중요하기 때문에 데이터(지구 온도 평균변화)를 시퀀스라고 간주해야 한다.



시퀀스(sequence) : 순서가 있는 문자
 

파이썬에서 문자열, 리스트, 튜플 같은 자료형을 시퀀스(sequence) 자료형이라고 부른다. 

여기에 포함된 각 객체는 순서를 가지고 인덱스를 사용하여 참조할 수 있다.


a = "I love Python"이라고 하면 a의 객체 타입은 str형이다.
a내 원소들은 순서를 가지고, 인덱스를 이용해 참조가 가능하다.

파이썬을 인터프리터(interpreted)형 언어라고 한 번쯤은 들어봤을 것이다.
프로그램을 한 줄 한 줄씩 읽어 하나하나 해석해가는 방식을 뜻한다. 자세한 내용은 생략하고,


 for 원소 in 시퀀스:


위 for문 명령어는 파이썬에서 한 번에 한 원소씩 시퀀스의 모든 원소에 명령을 실행하는 방법이다.  

그러면 파일도 시퀀스일까? 아래 코드를 살펴보자.
좀 더 이해를 요구하는 문장이니 차근차근 곱씹어서 보도록 하자.

     file = open("observations")
     for line in file:

파이썬은 '파일(file)'을 줄(line)의 시퀀스라고 인식한다.
     파일의 각 줄은 문자의 시퀀스(sequence)이다. 
     따라서 파일은 시퀀스의 시퀀스라고 말할 수 있다.


순서쌍(ordered pair) 
무엇이 우선이고 다음인지를 알 수 있도록 두 개의 원소가 '순서대로' 정렬된 것이 순서쌍(ordered pair)이다. 
이때, 두 개의 원소가 서로 다른 것을 의미한다.

만약, 위와 같이 'example.txt'라는 파일이 있다.
example 파일을 읽으면 각 줄(line) 하나에는 1개의 이름과 1개의 이메일 주소가 있다.

example.txt는 '순서쌍(ordered pair)'의 집합(set)이라고 볼 수 있다
즉, (이름, 이메일)이라는 두 개의 원소가 '순서대로' 정렬되어 있다.
이러한 순서쌍이 여러 개 모여서 순서쌍의 집합(set)을 만들고 있다.

순서쌍의 집합을 일컬어 수학 용어로 관계(relation)라고 한다.

이러한 관계중에는 매핑(mapping)이라는 것이 있다.


매핑(mapping)은 첫 번째 원소가 모두 다른 순서쌍의 집합을 의미한다.

다만, 어떤 사람이 이메일을 2개를 적은 경우를 생각해 볼 수 있다.


이 경우에는 데이터가 관계(relation)이기는 하지만, 매핑(mapping)은 아니다.