ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2022.03.03 - [이코테] 파이썬 기초 문법(1) - 파이썬의 자료형
    개발/Python 2022. 3. 3. 17:49

    파이썬의 자료형

    수 자료형(정수형, 실수형), 리스트 자료형, 문자열 자료형, 튜플 자료형, 사전 자료형, 집합 자료형

     

    정수형 : 양의 정수, 음의 정수

    실수형 : 소수점 아래 데이터 포함

     지수표현 방식

     e/E 다음에 오는 수는 10의 지수부

    유효숫자e지수 = 유효숫자*10^지수​

     실수형 데이터로 처리한다

     임의의 큰 수를 표현할 때 사용됨

     - 최단 경로 알고리즘에선 도달할 수 없는 노드를 무한(INF)로 설정하는데, 이때 1e9 대입하면된다.

     ※ 실수형 표현하는 정확도에 한계가 존대한다. 컴퓨터는 2진수 체계이기 때문이다.

         ex) 0.3 + 0.6 = 0.9(10진수 체계), 0.3 + 0.6 = 0.8999...(2진수 체계)

        --> round() 함수 이용

              round(123.456 2)  -->  출력 123.46

    수 자료형의 연산

    • 사칙연산과 나머지 연산자 많이 사용됨
    • 나누기 연산 시 주의 : 나눠진 결과가 실수형
    • 나머지 연산자(%), 몫 연산자(//), 거듭제곱 연산자(**)

    리스트 자료형(배열, 테이블)

    - C/Java의 배열(Array), 연결 리스트(Arraylist), C++의 vector와 유사

     

    초기화

    • []안에 원소 넣기
    • 비어있는 리스트 초기화 : list(), []

    리스트의 인덱싱과 슬라이싱

    인덱싱(indexing)

    • 리스트의 특정한 원소에 접근하는 것
    • 인덱스값은 양수/음수 모두 가능

           양의 정수 : 0, 1, 2, 3, 4 ...

           음의 정수 : -5, -4, -3, -2, -1 ...

    슬라이싱(slicing)

    • 연속적인 위치를 갖는 원소들 가져오기
    • 콜론(:)을 이용하여 시작 인덱스와 끝 인덱스를 설정

    List comprehension

    • 리스트를 초기화하는 방법 중 하나

           - 대괄호 안에 조건문, 반복문 적용하여 초기화

           - 2차원 리스트 초기화 시 효과적

              특히 N*M 크기의 2차원 리스트 한 번에 초기화 할 때 유용

    array = [i for i in range(10)]
    
    n =3
    m =4
    
    array = [[0]*m for _ in range(n)] #good
    array[1][1] = 5 
    print(array)
    >>[0, 0, 0, 0], [0, 5, 0, 0], [0, 0, 0, 0]]
    
    array = [[0]*m]*n #bad, 리스트 안에 포함된 리스트가 모두 같은 객체로 인식 
    array[1][1] = 5
    print(array)
    >>[[0, 5, 0, 0], [0, 5, 0, 0], [0, 5, 0, 0]]

    리스트 관련 기타 메소드

    • append() : 리스트에 원소를 하나 삽입할 때 사용
    • sort() : 정렬(내림차순 정렬 시 reverse=True 옵션 추가)
    • reverse() : 리스트의 원소의 순서를 모두 뒤집어 놓는다
    • insert() : 특정한 인덱스의 위치에 원소 삽입
    • count() : 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 때 사용
    • remove() :  특정한 값을 갖는 원소를 제거하는데, 값을 가진 원소가 여러개면 하나만 제거함 (remove_all은 없음)
    a = [1, 2, 3, 4, 5, 5, 5]
    remove_set = {3,5}
    
    result = [i for i in a if i not in remove_set]
    print(result)
    >>>[1, 2, 4]

    문자열 자료형 

    문자열 초기화 : 초기화 시 큰 따옴표(")나 작은 따옴표(') 사용

    문자열 연산 : +, * 이용 가능, 인덱싱과 슬라이싱 가능, 특정 인덱스값 변경은 불가

    튜플 자료형

    리스트와 유사

    차이점 :

      1. 한 번 선언된 값은 변경이 불가

      2. 소괄호() 이용

      3. 리스트에 비해 상대적으로 공간 효율적이다.

    장점 :

      1. 서로 다른 성질의 데이터를 묶어서 관리하는 경우

          - 최단 경로 알고리즘에서(비용, 노드번호) 형태로 묶어 사용

      2. 데이터의 나열을 해싱의 키값으로 사용해야 할 때

      3. 리스트보다 메모리를 효율적으로 사용해야 할 때

    사전 자료형

    • key와 value의 쌍을 데이터로 가지는 자료형
    • 변경 불가능한 자료형을 key로 가질 수 있음
    • 해쉬 테이블을 이용하므로 데이터 조회 및 수정의 시간 복잡도가 O(1)

     관련 메소드

    • 키와 값을 별도로 뽑아내기 위한 메소드

           - key 데이터만 뽑아서 리스트 : keys() 함수

           - value 데이터만 뽑아서 리스트 : values() 함수

    data = dict()
    data['사과'] = 'Apple'
    data['바나나'] = 'Banana'
    data['코코넛'] = 'Coconut'
    
    print(data)
    
    if '사과' in data:
        print("'사과'를 키로 가지는 데이터가 존재합니다.")
    
    
    print(list(data.keys()))
    print(list(data.values()))
    
    >>> {'사과': 'Apple', '바나나': 'Banana', '코코넛': 'Coconut'}
    >>> '사과'를 키로 가지는 데이터가 존재합니다.
    >>> ['사과', '바나나', '코코넛']
    >>> ['Apple', 'Banana', 'Coconut']

    집합 자료형

    • 집합의 특징 : 중복 허용하지 않는다, 순서가 없다 / 특정값의 존재 여부 확인 시 활용!
    • 리스트/문자열을 이용해서 초기화 : set() 함수
    • 중괄호{}안에 원소를 나열하여 초기화
    • 데이터의 조회 및 수정의 시간 복잡도가 O(1) / 리스트와 튜플은 시간복잡도 O(n)
    data = set([1, 1, 2, 3, 4, 4, 5])
    print(data)
    
    data = {1, 1, 2, 3, 4, 4, 5}
    print(data)
    
    a = {1, 2, 3}
    a.add(3)
    print(a)
    print(1 in a)
    
    >>>{1, 2, 3, 4, 5}
    >>>{1, 2, 3, 4, 5}
    >>>{1, 2, 3}
    >>>True

     관련 메소드

    data = set([1,2,3])
    print(data)
    
    data.add(4)
    print(data)
    
    data.update([5,6])
    print(data)
    
    data.remove(3)
    print(data)
    
    >>>{1, 2, 3}
    >>>{1, 2, 3, 4}
    >>>{1, 2, 3, 4, 5, 6}
    >>>{1, 2, 4, 5, 6}

    사전 자료형 & 집합 자료형의 특징

     1. 리스트나 튜플은 순서가 있기 때문에 인덱싱을 이용해서 값을 얻을 수 있음

     2. 사전 자료형, 집합 자료형은 순서가 존재하지 않기 때문에 인덱싱으로 값을 얻을 수 없다

         - 사전의 key나 집합의 원소로 O(1)의 시간복잡도로 조회

         - 사전의 key나 집합의 원소로 변경 불가능한 문자열이나 튜플을 이용

Designed by Tistory.