잡다로그

[Python] 기초 문법 - 기본 입출력, 조건문/반복문, 함수/람다표현식, 유용한 표준 라이브러리 본문

Algorithm

[Python] 기초 문법 - 기본 입출력, 조건문/반복문, 함수/람다표현식, 유용한 표준 라이브러리

날으는다람쥐 2023. 3. 31. 18:10

입출력

* 입력

input() : 한 줄의 문자열을 입력 받는 함수

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

list(map(int, input().split()))		#공백 기준으로 구분된 데이터 입력
a, b, c = map(int, input().split))	#입력할 데이터 갯수 적고, 갯수 정해져있을 때 단순하게

sys.stdin.readline() : 빠르게 입력을 받아야 하는 경우. 즉 여러 줄(엔터로 구분되는 입력)의 입력을 받는 경우 필수! sys 라이브러리의 메소드 사용. 단, 입력 완료 후 Enter가 줄바꿈 기호로 입력되므로 rstrip() (줄 바꿈 기호 제거) 와 함께 사용.

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

* 출력

print(): 자동으로 줄바꿈이 된다.

print(7, end =" ")			# 줄바꿈 안하기
answer = 7
print("정답은 "+str(answer)+"입니다.")

f-string: 문자열 앞에 접두사 f를 붙여서 다양한 자료형의 여러 변수들을 간단하게 출력할 수 있다.

answer = 7
print(f"정답은 {answer}입니다.")

조건문

- 파이썬에서는 코드의 블록(실행 단위)을 들여쓰기(Indent)로 지정한다. 공백문자 4개를 표준으로 한다.

- 조건문의 기본 형태는 if ~ elif ~ else이다. 한 줄로 조건문을 작성할 수 있다.

- 한 줄로 조건부 표현식을 사용할 수 있다. result = "참일 때" if score >= 80 else "거짓일 때"

 

- 비교 연산자, 논리 연산자(and, or, not - 다른 언어들과 다르게 문자로 사용), 기타 연산을 사용할 수 있다.

- in 연산자: 포함 여부 검사에 사용 - 리스트, 튜플, 문자열 등에 사용 ex) not in 리스트

- pass 키워드: 아무것도 실행하지 않고 넘어가고 싶을 때

 

- 다른 언어와 다르게 수학의 부등식을 그대로 사용할 수 있다. 조건 연산자를 순차적으로 해결 (X). ex) 0 < x < 20

반복문

- while문 보다 for문을 사용하는 것이 더 간결하다.

- for문을 사용해 단순히 1회씩 순회하길 원한다면, rangr()를 주로 사용한다. ex) range(시작 값, 끝 값+1)

result = 0

for i in rang(1, 10):
    result += i

- continue 키워드: 특정 조건(if문)은 건너뛰고 다음 반복을 진행하고 싶을 때

- break 구문: 반복문을 즉시 탈출하고자 할 때 사용

 

함수

- 반복되는 작업을 함수로 구현하여 불필요한 반복을 줄인다.

def 함수명(매개변수):
    실행 할 소스코드
    return 반환 값

- global 키워드: 함수의 바깥에 정의되어 있는 변수를 참조하려면, global키워드를 사용해야 한다.

a = 10

def func():
    global a
    a +=1

그러나 리스트의 내부 원소에 접근하는 것은 가능 (?)

array = [1,2,3,4,5]
def funx():
   array.append(6)

- 파이썬 함수는 여러 개의 반환 값을 가질 수 있다.

def operator(a, b):
  add_var = a + b
  subtract_var = a - b
  multiply_var = a * b
  divide_var = a / b
  return add_var, subtract_var, multiply_var, divide_var	# packing

a, b, c, d = operator(7, 3)		# unpacking
print(a, b, c, d)

람다 표현식

- 함수를 한 줄에 작성할 수 있다. 

print((lambda a, b: a+b)(3, 7))	# 람다 표현식으로 구현한 add() 메서드

함수 자체를 입력으로 받는 함수 일 때, 기능이 매우 간단하거나 1회용일 때 유용하다. (ex. 정렬)

array = [('홍길동', 50), ('이순신', 32), ('아무개', 74)]

def my_key(x):
  return x[1]

print(sorted(array, key = my_key ))
print(sorted(array, key=lambda x:x[1]))
list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10]
result = map(lambda a,b: a+b, list1, list2)
print(list(result))		# 출력: [7, 9, 11, 13, 15]

유용한 표준 라이브러리

- 내장함수: 별도 import 없이 사용 가능하다.

result = eval("(3+5)*7")	# 56
result = sorted([9, 1, 8, 5, 4], reverse = True)	# [9,8,5,4,1]

- itertools: 반복되는 형태의 데이터 처리 시 유용. 특히 순열과 조합 라이브러리 ( 완전 탐색 문제!) 

from itertools import permutations	# 순열
from itertools import combinations	# 조합
from itertools import product	# 중복 순열
from itertools import combinations_with_replacement	# 중복 조합

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

- heapd: 힙 자료구조 제공. 우선순위 큐 구현 위해 (다익스트라-최단 경로 알고리즘)

- bisect: 이진 탐색 기능 제공

- collections: 덱(deque), 카운터(counter)등의 유용한 자료구조 포함

  • counter: 반복 가능한 객체가 주어졌을 때 내부 원소의 등장 횟수 카운트
from collections import Counter
counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(counter['blue'])

- math: 팩토리얼(!), 제곱근, 최대공약수(GCD), 삼각함수, 파이(pt) 등등 포함

import math
# 최소 공배수(LCM) 함수
def lcm(a, b):
	return a*b // math.gcd(a, b)
    
 print(math.gcd(21, 14) 	# 최대 공약수 (gcd) 계산
 print(lcm(21, 14))		# 최소 공배수 계산

본 포스팅은 하단의 책과 유튜브 강의를 참고하여 정리한 포스팅입니다.

 

이것이 취업을 위한 코딩 테스트다 with 파이썬 - YES24

나동빈 저자의 유튜브 라이브 방송 https://www.youtube.com/c/dongbinnaIT 취준생이라면 누구나 입사하고 싶은 카카오 · 삼성전자 · 네이버 · 라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생

www.yes24.com

Comments