파이썬 문법 총정리

권나영·2020년 7월 28일
0

파랑 : 이게 될까? 싶은 거

입출력


  • input, print 보다 빠른 입, 출력을 원한다면?

  import sys
  N,M=map(int,sys.stdin.readline().split())
    = N,M = map(int, input().split())

  sys.stdout.write(str(answer))
    = print(answer)
  • 재귀를 도는 횟수를 제한하고 싶다면?

  import sys
  sys.setrecursionlimit(10000)

문자열


  • split (리스트로 만들기)

    • s="{{2},{2,1},{2,1,3},{2,1,3,4}}"

      를 나눠서 리스트에 넣고 싶다면(['2', '2,1', '2,1,3', '2,1,3,4']),
      },{ 기준으로 쪼개면 됨

      s=s[2:-2].split("},{")
    • 왜이러지


리스트


  • 인접행렬

    • 만들기
      matrix=[[0]*(N) for i in range(N)]

    • matrix[a][b]=matrix[b][a]=1

딕셔너리


- get : key값으로 value값 얻기

a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
print(a.get('name'))
  • 결과 : pey

    - 딕셔너리에 key 값이 없을 경우?

    key 값과 원하는 default 값을 입력하면 default값을 돌려줌

    print(a.get('foo',0))
    • 결과 : 0

      print(a.get('name',0))
    • 결과 : pey


- dict에 key값이 있으면 1 증가 시켜주고, 아니면 1로 초기화

  • 일반 코드
    if key in my_dict:
    my_dict[key]+=1
    else:
    my_dict[key]=1
  • collections 모듈 사용
    from collections import defaultdict
    
    my_dict = defaultdict
    my_dict[key] += 1

lambda


  • 리스트 안의 set을 길이 기준 오름차순 정렬

    s=[{1,2,3,4},{4,3},{2,1,4},{3}]
    s.sort(key=lambda x : len(x))
    print(s)
    • 결과 : [{3}, {3, 4}, {1, 2, 4}, {1, 2, 3, 4}]
  • Counter 정렬

s=Counter({'2': 4, '1': 3, '3': 2, '4': 1})
print(sorted(s.items(),key=lambda x:x[1],reverse=True)) 
  - 결과 : [('2', 4), ('1', 3), ('3', 2), ('4', 1)] 

정규 표현식 re


  • 자주 사용하는 문자 클래스

    1) \d : 숫자와 매치, [0-9]와 동일
    2) \D : 숫자가 아닌 것과 매치, [^0-9]와 동일
    3) \s : 문자와 매치, [\t\n\r\f\v]와 동일
    4) \S : 문자가 아닌 것과 매치, [^ \t\n\r\f\v]와 동일
    5) \w : 문자 + 숫자와 매치, [a-zA-z0-9)]와 동일
    6) \W : 문자 + 숫자가 아닌 문자와 매치, [^a-zA-z0-9]와 동일

  • 메타 문자

    1) [] : 문자 클래스
    2) . : \n을 제외한 모든 문자와 매치 (점 하나는 글자 하나를 의미)
    3) * : 0회 이상 반복
    4) + : 1회 이상 반복
    5) {m,n} : m회 이상 n회 이하
    6) l : or 조건식을 의미
    7) ^ : 문자열의 시작
    8) $ : 문자열의 끝
    9) ? : 0회 이상 1회 이하
    10) \ : 이스케이프, 또는 메타 문자를 일반 문자로 인식하게 함
    11) () : 그룹핑, 추출할 패턴을 지정

    ex) \d+ : 2000에서 2000으로, \d : 2, 0, 0, 0


  • 메서드

    1) findall(정규표현식 패턴, 텍스트) : 텍스트에서 정규표현식 패턴에 해당하는 값을 찾아서 리스트로 반환

    import re
    findall=re.findall('World','Hello World Hello World')
    print(findall)
    • 결과 : ['World', 'World']


heapq 모듈


  • 최소힙 생성 : 기본이 최소힙임

    import heapq
    heap_list=[] #리스트 생성
    heapq.heappush(heap_list,'원하는값')
  • 최대힙 생성

    import heapq
    
    nums = [3,1,2]
    heap_list=[]
    
    for num in nums:
    	heapq.heappush(heap_list, (-num, num)) #튜플로 넣어주기 -> -num이 우선순위
    
    while heap_list:
    	print(heapq.heappop(heap_list)[1]) #인덱스 1 : 실제값

    아스키 코드


    -#### ord(문자) : 문자의 아스키 코드 반환
    -#### chr(숫자) : 숫자에 맞는 아스키 코드 반환

profile
나영

0개의 댓글