ABOUT ME

-

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

    기본 입출력

    자주 사용되는 표준 입력 방법

    • input() : 한 줄의 문자열을 입력 받는 함수
    • map() : 리스트의 모든 원소에 각각 특정한 함수를 적용할 때
    • list() : 리스트 선언

         ex) 공백을 기준으로 구분된 데이터 입력 받기

          - list(map(int, input().split())))

         공백을 기준으로 구분된 데이터의 개수가 많지 않다면

         - a, b, c = map(int, input().split())

        - 공백 기준으로 문자열로 입력 받아서 -> int로 형변환

    a = list(map(int, input().split()))
    
    print(a)
    
    >>> 1 2 3 4 5
    >>> [1, 2, 3, 4, 5]

    빠르게 입력받기

    • sys 라이브러리에 정의된 sys.stdin.readline() 메소드 이용

           단, 입력 후 엔터가 줄바꿈 기호로 입력되므로 rstrip() 메소드 함께 사용

    • 입력을 많이 받는 경우 필요함(그래프, 정렬, 이진 탐색 시 유용)

    자주 사용되는 표준 출력 방법

    • 기본 출력 : print()

          - 기본적으로 출력 이후에 줄바꿈 수행(원하지 않으면 end 속성 이용)

    • f-string

          - 문자열 앞에 접두사 f를 붙여 사용

          - 문자열과 정수를 함께 넣을 수 있다는 이점

    answer = 7
    print(f"정답은 {answer}입니다.")
    
    >>> 정답은 7입니다.

    조건문

    • 코드의 블록과 들여쓰기로 지정
    • 기본 형태 : if ~ elif ~ else
    • 비교 연산자, 논리 연산자(and, or, not) 기타 연산자(in, not in) 존재

           - 기타 연산자는 리스트, 튜플, 문자열, 딕셔너리 모두에서 사용 가능

             X in 리스트  : 리스트 안에 X가 들어가 있을 때 참(True)이다.

             X not in  문자열 : 문자열 안에 X가 들어가 있지 않을 때 참(True)이다.

    • pass 키워드

           - 아무것도 처리하고 싶지 않을 때

           - 디버깅 과정에서 형태만 만들어놓고 넘어갈 수 있음

    • 조건문의 간소화

           - 실행될 소스코드가 한줄인 경우, 굳이 줄바꿈 안해도됨.

           - 조건부 표현식(Conditional Expression): if ~ else문 한 줄에 작성

    score = 85
    
    if score >= 80: result = "Success"
    else: result = "Fail"
    
    print(result)
    
    >>>Success
    
    #조건부 표현식
    result = "Success" if score >= 80 else "Fail"
    
    print(result)
    
    >>>Success

    반복문

    • while문, for문
    • 연속적인 값을 차례대로 순화할 땐 range()

           - range(시작값, 끝값+1)

             -> 인자를 하나만 넣으면 시작값은 자동으로 0

    • continue 키워드, break 키워드
    scores = [90, 85, 77, 65, 97]
    cheating_student_list = {2, 4}
    
    for i in range(5):
      if i+1 in cheating_student_list:
        continue
      if scores[i] >= 80:
        print(i+1, "번 학생은 합격입니다.")
        
    >>>1 번 학생은 합격입니다.
    >>>5 번 학생은 합격입니다.

    함수

      1. 내장 함수 : input(), print() 등 파이썬에서 제공하는 함수

      2. 사용자 정의 함수

          - 어떻게 정의하는가?

    def 함수명(매개변수):
         실행할 소스코드
         return 반환값
    • 파라미터의 변수 직접 지정 가능 ( 순서 달라도 상관없음 )

            add(b=3, a=7)

    • global 키워드 : 함수 바깥에 선언된 변수 참조
    array = [1, 2, 3, 4, 5]
    
    def func():
      global array #값을 변경하거나 재할당하려면 global 키워드 이용
      array = [3, 4, 5]
      array.append(6)
    
    func()
    print(array)
    
    >>> [3, 4, 5, 6]
    • 여러개의 값 반환 가능(packing, unpacking)
    def operator(a, b):
        add_var = a + b
        sub_var = a - b
        mul_var = a * b
        div_var = a / b
        return add_var, sub_var, mul_var, div_var #packing
        
    a, b, c, d = operator(7, 3) #unpacking
    print(a, b, c, d)
    
    >>> 10 4 21 2.3333333333333335

    람다표현식

    : 특정한 기능을 수행하는 함수를 한 줄에 작성할 수 있음

      1. 내장함수에서 자주 사용되는 람다 함수

    array = [('홍길동', 50), ('이순신', 32), ('아무개', 74)]
    
    #정렬 기준 설정: 두번째 원소
    #1. 일반 함수 활용
    def my_key(x):
      return x[1]
    print(sorted(array, key=my_key))
    
    #2. 람다표현식 활용
    print(sorted(array, key=lambda x: x[1]))
    
    >>>[('이순신', 32), ('홍길동', 50), ('아무개', 74)]
    >>>[('이순신', 32), ('홍길동', 50), ('아무개', 74)]

      2. 여러개의 리스트에 동일한 규칙을 가지는 함수 적용

    list1 = [1, 2, 3, 4, 5]
    list2 = [6, 7, 8, 9, 10]
    
    result = map(lambda a, b: a+b, list1, list2)
    
    print(list(result))
    
    >>> [7, 9, 11, 13, 15]

    실전에서 유용한 표준 라이브러리

    • 내장 함수 : 기본 입출력 함수부터 정렬 함수까지 기본적인 함수들을 제공
    • itertools : 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공 / 순열과 조합 라이브러리
    • heapq : 힙(Heap) 자료 구조 제공 / 우선순위 큐
    • bisect : 이진탐색(Binary Search) 기능 제공
    • collections : 덱(deque), 카운터(Counter) 등의 유용한 자료구조 포함
    • math : 필수적인 수학적 기능 제공 / 팩토리얼, 제곱근, 최대공약수, 삼각함수 관련 함수부터 파이(pi)와 같은 상수 포함

    순열과 조합

    • 순열 : 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것 : nPr
    • 조합 : 서로 다른 n개에서 순서에 상관없이 서로 다른 r개를 선택하는 것 : nCr

    Counter

    • 등장횟수를 세는 기능
    • 리스트와 같은 반복가능한 객체가 주어졌을 때 내부의 원소가 몇번씩 등장했는지 count
    from collections import Counter
    
    counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
    
    print(counter['blue'])
    print(counter['green'])
    print(dict(counter)) #사전자료형으로 반환
    
    >>> 3
    >>> 1
    >>> {'red': 2, 'blue': 3, 'green': 1}

    최대공약수와 최소공배수

    import math
    
    #최소공배수(LCM)을 구하는 함수
    def lcm(a, b):
      return a * b // math.gcd(a, b)
    
    a = 21
    b = 14
    
    print(math.gcd(a, b)) #최대공약수 GCD 계산
    print(lcm(a, b)) #최소공배수 LCM 계산
    
    >>>7
    >>>42

     

Designed by Tistory.