본문 바로가기

Python

[Python] 파이썬 기본 개념(자료형, 함수, 입출력)

728x90
파이썬으로 알고리즘을 공부하기에 앞서
기본 개념들을 확실하게 익혀야 할 것 같아서 공부한 기록이다.

자료형

제일 기본적인 자료형이다. 정수형, 실수형, 리스트, 튜플, 문자열, 딕셔너리, 집합이 있다.
새로 알게 된 부분만 기록하려고 한다.

실수

지수 표현 방식

  • 파이썬에서는 e나 E를 이용한 지수 표현 방식을 이용할 수 있다.
a=1e9       #10억의 지수 표현 방식
print(a)    #1000000000.0

round() 

  • 컴퓨터 시스템은 실수를 연산할 때 부동 소수점을 이용하기 때문에 정확한 실수 표현이 안 될 수 있다.
    • round 메서드를 사용하면, n번째 자리에서 반올림할 수 있다.
import math

b=0.9912314
print(round(b,3))       #0.991
print(math.ceil(b))     #1
print(math.floor(b))    #0
  • round를 사용하면, 몇번째 자리에서 반올림할 것인 지 선택할 수 있다.

  • call signature을 보면, 옵션으로 몇번째 자리에서 반올림할 것인 지 선택할 수 있도록 오버로딩되어있다.
  • ceil과 floor은 이 작업이 안 되어있는 듯하다.

  • 애초에 반환값이 int다.

리스트

리스트 초기화

  • 곱셈을 사용해서 리스트를 초기화할 수 있다.
#크기가 N이고, 모든 값이 0인 1차원 리스트 초기화
N=10
c=[0]*N
print(c)    #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

리스트의 슬라이싱

  • 리스트에서 연속적인 위치를 갖는 원소들을 가져와야 할 때 콜론(:)을 사용해서 슬라이싱할 수 있다.
d=[1,2,3,4,5,6,7]
print(d[4:-1])      #[5, 6]
  • 인덱스가 4인 원소부터 마지막 원소 전까지의 리스트 슬라이싱

리스트 컴프리헨션

  • 리스트를 초기화하는 방법 중 하나이다. 대괄호 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화 한다. 
#0부터 19까지의 수 중에 홀수만 포함하는 리스트
e=[i for i in range(20) if i%2==1]
print(e)                            #[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

#1부터 9까지 수의 제곱 값을 포함하는 리스트
f=[i*i for i in range(1,10)]
print(f)                            #[1, 4, 9, 16, 25, 36, 49, 64, 81]
  • 첫 번째에서는 반복문에 i에 대한 조건문을 더해 원하는 조건의 i를 반환하는 듯한 코드
  • 두 번째는 i에 대한 반복문을 이용해 i에 대한 연산을 바로 한 코드
변수 반복문 조건문 순서이다.
#N X M 크기의 2차원 리스트 초기화
n=3
m=4
arr=[[0]*m for _ in range(n)]
print(arr)                          #[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
  • 위와 같이 2차원 배열을 초기화할 때 효과적이다.
  • 2차원 배열을 초기화할 때 컴프리헨션을 사용하지 않으면, 포괄하는 배열 내부 각각의 배열들이 동일한 객체에 대한 레퍼런스로 인식될 수 있으니 꼭 컴프리헨션을 사용해야 한다. 
언더바(_)의 역할
- 반복을 수행하되 변수의 값을 무시하고자 할 때 언더바를 자주 사용한다.

리스트에서 특정 값의 원소를 모두 제거해야 할 때

g=[1,2,3,3,4,4,4,5]
remove_set=[3,4]

result=[i for i in g if i not in remove_set]
print(result)                                   #[1, 2, 5]

튜플

튜플은 소괄호()를 이용한다.
튜플은 한 번 선언된 값을 변경할 수 없다.
  • 위와 같은 튜플의 특성을 이용해 변경하면 안 되는 값이 변경되고 있지 않은지 체크할 수 있다.

딕셔너리

딕셔너리는 키와 값의 쌍을 데이터로 가지는 자료형이다. 때문에 순서가 없다.
  • 딕셔너리도 앞서 기록한 리스트, 문자열, 튜플처럼 원소들을 차례대로 반복할 수 있는 Iterable 자료형이다.
  • 따라서 in 문법도 사용이 가능하다.

집합

특징

  • 중복을 허용하지 않는다.
  • 순서가 없다.

집합의 초기화

data=set([1,1,2,3,4,5,5])
print(data)                 #{1, 2, 3, 4, 5}

data={1,2,2,3,4,4,5}
print(data)                 #{1, 2, 3, 4, 5}
  1. set 메서드 안에 리스트를 넣어준다.
  2. 중괄호({}) 안에 원소를 넣어준다.

함수

함수 부분에서는 람다 표현식에 관해 새로 알게 되었다.

람다 표현식

  • 람다 표현식을 사용하면 함수를 매우 간단하게 작성하여 적용할 수 있다.
print((lambda a,b:a+b)(3,7))    #10

입출력

입출력 부분에서는 코딩테스트에서 유용하게 쓰일 만한 것들을 공부했다.

Input 데이터 관리

  • 코딩 테스트에서는 입력이 보통 아래와 같이 주어진다.
3
1 12 54
  • Input 데이터를 효과적으로 관리할 수 있을까
  • list(map(int, input().split())) 을 이용하면 된다.
list(map(int,input().split()))
  • 위에서 작성한 예시를 입력으로 받는다고 가정하자.
  • input().split() : 공백으로 구분하여 데이터를 리스트로 저장한다.
  • map(int, ) : map 함수는 첫 번째 인자로 받은 함수를 두 번째 인자를 순회하며 적용한다.

readline()

  • 파이썬에서 input() 함수는 동작 속도가 느려서 시간 초과로 오답을 받을 수도 있다.
  • sys 라이브러리에 정의되어 있는 sys.stdin.readLine() 함수를 이용하면 보다 빠르게 입력을 받을 수 있다.
  • 입력 후 개행 문자를 없애기 위해 rstrinp() 함수를 꼭 사용해야 한다.
data=sys.stdin.readline().rstrip()
print(data)

출처

이것이 취업을 위한 코딩 테스트다 -나동빈

 

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

IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년부터 2020년까지의 코딩 테스트와 알고리즘 대회의 기출문제를 엄선하여 수록하였다.

www.hanbit.co.kr

 

728x90