yuns

자료구조, 문자열, 정규표현식 본문

goorm 수업 정리/파이썬

자료구조, 문자열, 정규표현식

yuuuun 2021. 8. 5. 12:17
반응형

자료구조

Stack

  • 스택 구조는 기존의 list활용
  • 동적 배열이기 때문에 push와 pop이 O(1)
  • >>> a = [1, 10]
    >>> a.append(4)
    >>> a.append(20)
    
    >>>a.pop()
    20
    >>>a.pop()
    4

Queue

  • 큐 구조를 리스트로 만들 경우 시간 복잡도가 매우 오래걸림
>>> a = [1, 10]
>>> a.insert(0, 20)
>>> a.insert(0, 15)
>>> a.pop()
10
>>> a.pop()
1
  • linked list 인 collection library의 deque를 사용할 것
>>> from collections import deque
>>> queue = deque([10, 5, 12])

>>> queue.appendleft(16)
>>> queue.pop()
12

>>> queue.append(20)
>>> queue.popleft()
16

>>> queue
deque([10, 5, 20])
>>> queue(reversed(queue))
deque([20, 5, 10])

defaultdict

  • python 기본 dictionary는 key가 없을 경우 에러가 생긴다.
from collections import defaultdict
chars = defaultdict(int)
for char in text:
    chars[char] += 1
from collections import Counter

text = 'sdfsdfasfdfsdfa'
c = Counter(char for char in text)
>>> c = Counter({"Korean":2, "English": 3})
>>> c
Counter({'English': 3, 'Korean':2})

>>> c.keys()
Dict_keys(['Korean', 'English'])

>>> c.values()
Dict_values([2, 3])

>>> c['Korean']
2

>>> list(c.elements())
['Korean', 'Korean', 'English', 'English', 'English']
  • 횟수 더하기, 교집합, 합집합, 차집합 등 가능

Named Tuple

  • 데이터가 많아지면 각 위치가 무엇을 의미하는지에 대한 관리가 어려울 수 있음
from collections import namedtuple

Coords3D = namedtuple("Coords3D", ['x', 'y', 'z'])
point = Coords3D(10, 20, z=30)

print(point.x)		#10
print(point[1])		#20
print(*point)		#10 20 30

# point[1] += 1		#ERROR

Dataclass

from dataclasses import dataclass

@dataclass
class Coords3D:
    x: float
    y: float
    z: float = 0
    
    def norm(self) -> float:
        return(self.x ** 2 + self.y ** 2 + self.z ** 2) ** .5

point = Coords3D(10, 20, z=30)
print(point)                    #Coords3D(x=10, y=20, z=30)
print(point.norm())             #37.416573867739416

String

  • 원시 자료형이자, 불변 타입
  • 큰 따옴표 혹은 작은 따옴표로 표기
  • 따옴표를 3개 연달아 사용할 경우 여러 줄을 넣을 수 있음
  • Indexint 및 Slcing이 가능
  • 덧셈 및 곱셈이 가능
  • in & not in 연산 가능
    • tuple과 다소 다르게 작동
  • Unicode로 처리
문자 설명
\ 다음 줄과 여속임을 표현
\\ \문자
\' '문자
\" "문자
\b 백스페이스
\n 줄바꾸기
\t TAB
\e ESC
함수 형태 기능
len(string) 문자 개수
string.upper() 대문자로 변환
string.lower() 소문자로 변환
string.capitalize() 문자열 시작 문자를 대문자로 변환
string.title() 단어 시작을 대문자로 변환
string.strip() 좌우 공백 제거
string.lstrip() 왼쪽 공백 제거
string.rstrip() 오른쪽 공백 제거
string.isdigit() 숫자 형태인지 확인
string.isupper() 대문자로만 이루어져 있는지 확인
string.islower() 소문자로만 이루어져 있는지 확인

String Pattern Matching

함수 형태 기능
string.count(pattern) 문자열 string 내에 pattern 등장 횟수 반환
string.find(pattern) 문자열 string내에 pattern 첫 등장 위치 반환(앞에서부터)
string.rfind(pattern) 문자열 string내에 pattern 첫 등장 위치 반환(뒤에서부터)
string.startswith(pattern) 문자열 string이 pattern으로 시작하는지 확인 
string.endswith(pattern) 문자열 string이 pattern으로 끝나는지 확인 (확장자 등을 확인할 때 자주 사용됨)

String Split & Join

함수 형태 기능
string.split() 공백을 기준으로 문자열 나누기
string.split(pattern) pattern을 기준으로 문자열 나누기
string.join(iterable) String을 중간에 두고 iterable 원소들 합치기

String Formatting

  • print할 때 보기 좋게 값을 확인하고 싶을 경우
a, b, c = 10, 1.72, 'sample'
>>> "%d:  %f - %s" %(a, b, c)
'10:  1.72 - sample'
>>> "{} : {} - {}".format(a, b, c)
'10: 1.72 - sample'

>>> f"{a}: {b} - {c}"
'10: 1.72 - sample'

padding

>>> "%d + %d + %d" %(1, 10, 100)
'1 + 10 + 100'
>>> "%4d + %4d + %4d" %(1, 10, 100)
'   1 +   10 +  100'
>>> "%-4d + %-4d + %-4d" %(1, 10, 100)
'1    + 10   + 100 '
>>> "%04d + %04d + %04d" %(1, 10, 100)
'0001 + 0010 + 0100'
>>> "%f + %f + %f" %(123.4, 12.34, 1.234)
'123.400000 + 12.340000 + 1.234000'
>>> "%.3f + %.3f + %.3f" % (123.4, 12.34, 1.234)
'123.400 + 12.340 + 1.234'
반응형

'goorm 수업 정리 > 파이썬' 카테고리의 다른 글

파일 입출력  (0) 2021.08.06
정규표현식  (0) 2021.08.06
문법(2)  (0) 2021.08.04
문법  (0) 2021.08.03
Intro  (0) 2021.08.02
Comments