programming/python

기본 문법

chanchand 2023. 5. 27. 21:01
반응형

지수 표현 방식

e나 E 다음에 오는 수는 10의 지수부를 의미

ex) 1e9 = 10^9

ex) 1e-3 = 10^-3

 

실수형

컴퓨터 시스템은 실수 정보를 표현하는 정확도에 한계를 가짐

ex) 0.3 + 0.6를 0.9와 가깝게 표현하지만 미세한 오차 발생

이를 위해 round() 함수 이용할 수 있음

 

리스트 

대괄호 안에 조건문과 반복문을 적용하여 리스트 초기화 가능

arr = [i for i in range(10)]
print(arr) # [0,1,2,3,4,5,6,7,8,9]

arr = [i for i in range(10) if i%2 == 1]
print(arr) # [1,3,5,7,9]

 

2차원 리스트 초기화

arr = [[0]*m for _ in range(n)]

아래와 같이 작성하면 리스트가 모두 같은 객체로 인식됨 (잘못된 방법)

arr = [[0]*m]*n

 

문자열 연산

문자열은 특정 인덱스의 값을 변경할 수 없음 

 

집합 자료형

중복과 순서가 없음

합집합 : |

교집합 : &

차집합 : -

 

map

리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용

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

 

빠르게 입력 받기

사용자로부터 입력을 최대한 빠르게 받아야 하는 경우에 사용

sys 라이브러리에 정의되어 있는 sys.stdin.readline() 함수 사용

입력 후 엔터가 줄 바꿈 기호로 입력되므로 rstrip() 메서드를 사용해야 함

import sys

data = sys.stdin.readline().rstrip()

 

 

표준 출력

기본적으로 출력 이후 줄바꿈을 수행하며, 원하지 않는 경우에는 end 속성을 통해 변경 가능

 

들여쓰기

4개의 공백 문자를 사용하는 것이 표준으로 설정됨

 

연산자

논리 : and, or, not

기타 : in, not in

 

pass

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

 

조건문 간소화

실행될 소스코드가 한 줄인 경우, 줄바꿈을 하지 않고도 표현 가능

if a > 5: b = "success"
else: b = "fail"

 

if ~ else문을 한줄에 작성할 수 있음

b = 'success' if a > 5 else 'fail'

 

조건문 내 부등식

수학의 부등식을 그대로 사용할 수 있음

ex) if x>0 and x<5 -> if 0<x<5

 

인자(argument) vs 매개변수(parameter)

인자 : 호출할 때 넣는 값

매개변수 : 전달받고자 하는 값

 

global

지역 변수를 만들지 않고, 함수 바깥에 선언된 변수를 바로 참조함

함수 내부에 지역변수가 존재한다면, 지역변수를 우선으로 참조함

 

람다 표현식

함수를 간단하게 한줄에 작성 가능

def add(a, b):
	return a+b

print(add(1,2)) 

# 람다 표현식
print((lambda a, b: a + b)(1,2))

 

내장 함수에서 주로 사용됨

리스트의 두번째 속성 값을 이용해서 정렬 가능

arr = [('a', 5), ('b', 3), ('c',7)]

def arr_key(x):
	return x[1]

print(sorted(arr, key=arr_key))
print(sorted(arr, key=lambda x:x[1]))

 

여러개의 리스트에 하나의 함수를 적용하고자 할 때 사용가능

list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10]

res = map(lambda x,y:x+y, list1, list2)
print(list(res)) # [7,9,11,13,15]

 

라이브러리

내장함수 : 기본 입출력 함수부터 정렬함수까지 기본 함수 제공, import 없이 사용 가능

itertools : 반복되는 형태 데이터 처리, 순열과 조합

heapq : 힙 자료구조 제공, 큐 기능 구현

bisect : 이진탐색 기능

collections : 덱, 카운터 등

math : 필수 수학적 기능 제공

 

eval() : "" 사이 계산 결과 반환

sorted() : 정렬, reverse 옵션

 

- itertools

순열 : 서로 다른 n개에서 서로 다른 r개를 선택, 순서 고려, nPr (permutation)

조합 : 서로 다른 n개에서 순서 상관없이 서로 다른 r개 선택, nCr (combination)

 

from itertools import permutations
from itertools import combinations
from itertools import product
from itertools import combinations_with_replacement

data = ['a', 'b', 'c']

res1 = list(permutations(data, 3)) # 순열, 모든 경우의 수
res2 = list(combinations(data, 2)) # 조합, 2개를 뽑는 조합
res3 = list(product(data, repeat=2)) # 중복순열, 2개를 뽑는 순열
res4 = list(combinations_with_replacement(data, 2)) # 중복조합, 2개를 뽑는 조합

 

- collections

등장 횟수를 세는 기능 제공

반복 가능한 객체가 주어졌을 때 내부의 원소가 몇번씩 등장했는지 알려줌

from collections import Counter

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

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

 

- math

최대공약수 : 공통된 약수 중 가장 큰 수

최소공배수 : 공통된 배수 중 가장 작은 수

gcd() : 최대공약수

최소공배수는 두 수의 곱을 최대공약수로 나누어서 구할 수 있음

import math

# 최소 공배수
def lcm(a, b):
	return a*b // math.gcd(a, b)

a = 20
b = 14

print(math.gcd(a,b)) # 최대공약수(gcd)
print(lcm(a,b)) # 최소공배수(lcm)

 

반응형

'programming > python' 카테고리의 다른 글

집합 자료형  (0) 2023.06.03
순서 뒤집기  (0) 2023.06.01
딕셔너리 자료형  (0) 2023.05.27
zip 내장함수  (0) 2023.05.27
list 자료형  (0) 2023.05.06