Python 개념 정리

hodu·2022년 9월 30일
0

python

목록 보기
8/17

(씽크파이썬 19장)

알아두면 좋은 개념들

  • 조건식
    • 조건식의 두 분기가 같은 변수에 대입하거나 반환하는 형태의 간단한 표현식일 경우 줄일 수 있음
      if x > 0:
      	y = math.log(x)
      else:
      	y = float('nan')
      
      y = math.log(x) if x > 0 else float('nan')
  • 리스트 컴프리헨션

    • 간단한 표현식을 더 간결하고 읽기 쉽게 해줌
  • 제너레이터 표현식

    • 컴프리헨션과 비슷하나, [] 대신 ()를 쓴다.
      g = (x**2 for. in range(5))
    • 시퀀스 값을 어떻게 반복할지 아는 생성자 객체.
    • 값을 요청받는 것을 기다림, next를 이용하여 다음 값을 가져올 수 있음
      next(g) 0
      next(g) 1
      마지막에 도달하면 StopIteration 예외
    • sum, max, min과 자주 사용됨
      sum(x**2 for x in range(5))
  • any와 all
    • any : 하나라도 True면 True
      any([False, True, False])
      # True
    • all : 모두 True면 True
      all([False, True, False])
      # False
  • 집합
    • 값이 없는 키로 구성된 사전 컬렉션처럼 동작함
    • 원소추가가 빠르고 확인도 빠름
    • 집합 연산을 계산하기 위한 메서드와 연산자 제공
    • -, <, > ,<= 도 사용가능
      set(word) <= set(available)
      # word의 모든 문자가 available에 들어있는지 확인
      # 한 집합이 하위 집합인지 또는 다른 집합인지 확인
  • counter

    • 집합과 비슷하나 원소가 두번 이상 나타나면 횟수를 관리함
    • 나타난 적이 없는 원소에 접근하면 0을 반환함
    • 애너그램
      Counter(word1) == Counter(word2)
    • 덧셈, 뺄셈, 합집합, 교집합 등 연산도 가능
    • most_common을 이용하면 가장 많이 나온 순서대로 정렬한 리스트 반환
  • defaultdict

    • 사전에 없는 키에 접근 할 경우 즉시 새로운 값을 만듦
  • 이름있는 튜플

    • 첫번째 인수는 생성할 클래스의 이름, 두번째는 객체가 갖게 될 속성들의 리스트를 문자열로 나타낸 것

    • 클래스 객체를 반환함

      class Point:
      	def __init__(self, x=0, y=0):
      		self.x = x
      		self.y = y
      
      	def __str__(self):
      		return x, y
      
      # 위 코드를 아래처럼 변경 가능
      from collections import namedtuple
      Point = namedtuple('Point', ['x','y']
    • 이름으로 접근 가능, 이름있는 튜플을 튜플로 취급할 수 있음

  • 키워드 인수를 모으기

    • (*args)를 이용하면 인수를 튜플로 모아서 처리
      임의의 위치 인수(키워드가 없는 인수)와 호출할 수 있음
    • **를 사용하면 키워드 인수를 모아준다
      → 결과는 사전
      ```python
      def printall(*args, **kwargs):
      	print(args, kwargs)
      
      printall(1, 2.0, third='3')
      # (1, 2.0) {'third' : '3'}
      ```
  • assert

    assert 문이란? 조건문이 True가 아닐 경우, 예외를 일으킨다
    조건이 참일 때 코드는 내가 보장한다. 이 조건은 올바르다. 하지만 거짓은 보장x → 에러를 발생시켜라

profile
안녕 세계!

0개의 댓글