본문 바로가기
공부/Python

파이썬 복습 2

by JERO__ 2021. 3. 31.

조건문

score = 85

result = "Success" if score > 80 else "Fail"

 

전역변수

a = 0

def func():

    global a

    a += 1

for _ in range(10):

    func()

print(a)                                 # 10

 

입출력

1. 숫자

n = int(input())                                      # 1개 입력

data = list(map(intinput().split()))              # 여러개 입력 -> 리스트 lms

n, m, k = map(int, input().split())                # 3개 입력 받았을 시

 

2. 문자열

import sys

data = sys.stdin.readline().rstrip()               # ssr()r()

print(data)

 

 

자주 쓰는 내장함수

- import 명령어 없이 바로 사용가능

1. sum

result = sum([1,2,3,4,5])

 

2. min

result = min(7, 3, 5, 2)

 

3. max

result = max(7, 3, 5, 2)

 

4. eval : 수학수식(문자열형태) -> 결과 반환

result = eval("(3+5)*7")

 

5. sorted

result = sorted([9, 1, 8, 5, 4])

result = sorted([9, 1, 8, 5, 4], reverse=True)

 

순열, 조합 itertools

1. 모든 순열 구하기 : permutations

from itertools import permutations

data = ['A', 'B', 'C']

result = list(permutations(data, 3))        # [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C') ......]

 

2. 2개를 뽑는 모든 조합 : combinations

from itertools import combinations

data = ['A', 'B', 'C']

result = list(combinations(data, 2))        # [('A', 'B'), ('A', 'C'), ('B', 'C')]

 

3. 2개를 뽑는 모든 순열 구하기(중복허용) : product

from itertools import product

data = ['A', 'B', 'C']

result = list(product(data, repeat=2))        # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C')..............]

 

 

힙 heapq : O(NlogN)

1. 오름차순

import heapq

# O(NlogN)

def heapsort(iterable):

        h = []

        result = []

        # 1. iterable -> h

        for value in iterable:

            heapq.heappush(h, value)

        # h -> result

        for i in range(len(h)):

            result.append(heapq.heappop(h))

        return result

result = heapsort([1,3,5,7,9,2,4,6,8,0])

print(result)

 

2. 내림차순

import heapq

# O(NlogN)

def heapsort(iterable):

        h = []

        result = []

        # 1. iterable -> h

        for value in iterable:

            heapq.heappush(h, -value)

        # h -> result

        for i in range(len(h)):

            result.append(-heapq.heappop(h))

        return result

result = heapsort([1,3,5,7,9,2,4,6,8,0])

print(result)

 

특정 수 찾기 O(logN)

이진탐색 : 정렬된 배열에서 찾기 bisect

 

from bisect import bisect_left, bisect_right

a = [12448]

x = 4

print(bisect_left(a,x))       # 2

print(bisect_right(a,x))      # 4

 

 

deque

- 리스트보다 빠르다.

리스트의 원소 추가 : O(N)

deque의 원소 추가 : O(1)

 

from collections import deque

data = deque([234])

data.appendleft(1)

data.append(5)

print(data)                        # deque([1, 2, 3, 4, 5])

print(list(data))                   # [1, 2, 3, 4, 5]

 

Counter

- 리스트 원소의 갯수를 세어줌

 

from collections import Counter

counter = Counter(['red''red''green''blue''blue''blue'])

print(counter['blue'])        # 3

print(dict(counter))          # {'red': 2, 'green': 1, 'blue': 3}

 

 

math

1. factorial

2. sqrt : 제곱근

3. gcd : 최대공약수 

4. pi, e

import math

print(math.factorial(5))           # 1

print(math.sqrt(9))                 # 2

print(math.gcd(915))            # 3

print(math.pi)                      # 4

print(math.e)

 

 

'공부 > Python' 카테고리의 다른 글

sys.stdin.readline().rstrip()  (0) 2021.04.10
DFS  (0) 2021.04.09
lambda 정렬  (0) 2021.04.08
str 'a' -> int형 97  (0) 2021.03.31
파이썬 복습 1  (0) 2021.03.30

댓글