ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 기초 정복하기 -3) 자료형(타입) : 데이터의 다양한 형태
    IT/파이썬 기초 2021. 10. 5. 12:03
    728x90
    SMALL

    앞 장에서 변수를 선언하는 방법과 의미를 알아보았다.

    (https://2island.tistory.com/24)

     

    이번에는, 변수 선언 시, 변수에 대입해주는 "값"의 종류에 대해서 이야기해보려고 한다.

    a = 1

    위 코드에서는 a라는 변수에 1이라는 값을 넣어줬다.

    1이라는 값은 우리가 아는 "숫자"의 형태이다. 즉 이 데이터의 종류는 숫자가 된다. 우리는 이런 종류를 앞으로 type 또는 자료형이라고 부를 것이다. 

     

    1) 타입

    이 데이터의 타입에는 어떤 것들이 있을까?

     

    - 정수 : int

    정수는 우리가 수학시간에 배웠던 대로, 0을 포함한 모든 양수와 음수를 정수라고 한다. -1, -100, 1, 434 등등 소수점이 없는 우리가 아는 일반적인 숫자들을 정수라고 부른다. 그리고 우리는 이 정수형 타입을 앞으로 "int"타입이라고 부를 것이다.

    a = 1
    b = 4
    print(type(a))
    print(type(b))

    실제로 위의 코드를 실행해보면, int 타입이라고 찍히는 것을 볼 수 있다. 아래 코드들에서도 type()을 활용해서 한번 찍어보자.

     

    - 실수 : float

    실수는 정수를 포함한 모든 수를 실수라고 배웠다. 정수 뒤에 소수점이 붙은 형태는 모두 실수이다. -1.2342, 100.2344 등이 그 예시겠다. 이러한 실수 타입은 "float"타입이라고 부른다.

    a = 1.3432
    b = -1.32423
    print(type(a))
    print(type(b))

     

    - 문자열 : str

    문자열은 말그대로 문자의 모음이다. 문자들이 다 합쳐져서 하나의 문자열을 만든다. 이 문자열은 우리가 string 이라고 부르며, 파이썬에서는 "str" 타입으로 표기된다. 읽을 때는 string으로 읽으면 된다. 

    a = "hello!"
    print(type(a))

     

    - 불 : bool

    불은 True, False 둘 중에 하나를 갖는 값으로, 변수가 참인지 거짓인지 판단해줘야할 때 사용하는 타입이다. "bool" 타입이라고 부르자.

    a = True
    b = False
    print(type(a))
    print(type(b))

     

    - 리스트 : list

    리스트는 여러 타입을 하나로 쭉 나열한 형태이다. 

    예를 들어, 호텔이 있고 호텔의 방 마다 비치된 수건의 개수를 조사한다고 해보자. 이 때, 1호실에 수건 2개, 2호실에 수건 5개, 3호실에 수건 1개, 4호실에 수건 3개이 있다고 가정하고 코드로 나타내보면 다음과 같이 나타낼 수 있다.

    towels = [2, 5, 1, 3]
    print(type(towels))

    1호실부터 순서대로 4호실까지의 수건 개수를 쭉 나열한 형태이다. 이처럼 [] 안에 데이터를 순서대로 나열하는 형태를 리스트라고 한다.

    여기서 핵심은 "순서대로"라는 것에 있다. 컴퓨터에서는 순서가 항상 0부터 시작한다. 그래서 리스트는 0번째에는 2, 1번째에는 5, 2번째에는 1, 3번째에는 3이라는 값이 들어있다고 해석한다. N호실의 값은 N-1번째에 그 값이 존재하는 형태가 되는 것이다. 즉, 1호실은 리스트의 0번째의 값이 무엇인지 보면 알 수 있다.

    그런데, 위의 예제에서는 int 타입의 값들만 나열해놨지만 list는 실제로 여러 타입의 값을 나열할 수 있다.

    towels = [1, "3개", "5", 1.0]

    위의 코드 처럼 수건의 개수를 여러 형태로 저장할 수 있다. 그런데 보통은 통일시켜서 쓴다. 특수한 경우를 제외하고는.

     

    - 딕셔너리 : dict

    딕셔너리는 key와 value로 이루어진 자료형이다. 실제로 {key1 : value1, key2 : value2}와 같은 형태로 생겼으며, 여러 개의 값이 들어갈 경우 key의 값이 중복되지 않는다. 

     예를 들어, 여러 사람의 인적정보를 저장한다고 할 때, 위에서 우리가 배운 변수로 저장하게 되면 아래와 같은 코드가 나온다.

    person1_name = "김철수"
    person1_age = 24
    person1_phone = "010-1111-1111"
    
    person2_name = "김영희"
    person2_age = 31
    person2_phone = "010-2222-2222"

    딕셔너리를 사용하면 이 정보를 훨씬 깔끔하게 저장할 수 있다.

    person1 = {
    	name: "person1",
        age: 24,
        phone: "010-1111-1111"
    }
    
    person2 = {
    	name: "person2",
        age: 31,
        phone: "010-2222-2222"
    }

    이렇게, 저장을 해주면, person1, person2의 이름, 나이, 휴대폰 번호를 좀더 보기 편하게 코드를 작성해줄 수 있다.

    여기서 person1과 person2를 동시에 저장하여 관리할 수도 있다.

    people = {
    	"010-1111-1111": {
        	name: "person1",
            age: 24,
            phone: "010-1111-1111"
        },
        "010-2222-2222": {
        	name: "person2",
            age: 31,
            phone: "010-2222-2222"
        }
    }

    딕셔너리의 key는 중복되지 않는다고 하였으므로, 중복되지 않으면서 person1과 person2를 식별할 수 있는 값을 key로 넣어주어야한다.

    여기서는 전화번호가 중복되지 않는 값이므로, 전화번호를 key값으로 넣어주었다.

    key로 구분을 해주다보니, 딕셔너리는 리스트와 다르게 순서가 없다. 리스트에서는 "N번째"의 값이 무엇인지 접근하는 형태라면 딕셔너리는 키로 바로 접근이 가능하기 때문에 순서가 없는 것이다. 따라서, 딕셔너리는 "순서에 상관없는 key, value로 이루어진" 타입이라고 정의할 수 있다. 딕셔너리는 dict 라고 타입이 표기된다. "dict" 타입이라고 부르거나, 딕셔너리 타입이라고 부르면 된다.

     

    - set(집합): set

    set은 집합자료형이라고도 부르는데, 이 타입은 "중복되는 값"이 없는 타입이다. 이게 무슨말이냐면, 1, 3, 1, 1, 5, 2, 6, 1 이라는 데이터들이 있다고 하면 셋 타입은 이를 1, 3, 5, 2, 6으로만 본다는 이야기이다. 이 타입은 아래 코드와 같이 선언할 수 있다.

    a = {1, 3, 5, 2, 6}
    print(a)

    딕셔너리를 선언할 때 사용했던 {}를 사용하고 그 안에 데이터들을 넣어주면된다. 여기서 신기한 점은 아래 코드를 보면 알 수 있다.

    a = {1, 3, 5, 7, 3}
    print(a)

    set 타입은 분명히 중복이 없다고 했는데, 여기서는 3이 중복으로 들어갔다. 그리고 그 후 print()로 출력을 했다. 그러면 어떻게 될까?

    이렇게, 중복이 사라지고 중복이 없는 값들로만 변환된다. 여기서 보면 알 수 있듯이, set 타입은 중복도 없고 순서도 없다. 데이터들의 집합이 중복이 없도록 하는 것에만 포커스가 맞춰져있는 타입이다. set타입으로 표기되고, "set"타입이라고 부르면 된다.

     

    - 튜플: tuple

    튜플 타입은, 리스트와 비슷한 느낌이다. 순서가 존재하는 데이터의 나열이다. 그러나 리스트와는 차이가 있다.

    a = (1, 3, 5, 7, 1, 4)
    print(a)

    위에서 봤을 때 리스트는 [] 안에 데이터를 집어넣었다. 튜플은 () 안에 데이터를 집어넣는다.

    여기서 또 하나의 차이점이 있는데, 그것은 바로 튜플 타입은 '읽기'만 가능하다는 것이다. 한 번 생성되면 값을 절대 변경할 수가 없다는 점이다. 리스트는 값을 수정하거나, 새로 넣거나, 삭제할 수 있지만 튜플 자료형은 절대 그렇게 할 수 없다.

     

     

    우선 이번 포스팅에서는 변수에 들어가는 값의 형태가 이런 것들이 있다고 알아두면 될 거 같다. 다음 포스팅부터는 이 데이터 타입의 세부적인 문법을 통해 진짜 프로그래밍을 시작해볼 것이다!

    728x90
    LIST

    댓글

Designed by Tistory.