코딩 테스트를 위한 파이썬 문법 1

Cammie·2022년 6월 21일
1

코딩 테스트

목록 보기
1/10
post-thumbnail

해당 포스팅은 "이것이 취업을 위한 코딩 테스트다 with 파이썬" 책의 부록 A 부분을 참고하여 포스팅하였습니다 ✍️✍️



📌 자료형

1. 수자료형

지수 표현 방식

e나 E를 이용한다. 이때 e는 다음에 오는 수는 10의 지수부를 의미한다.

숫자 e 지수 == 숫자 x 10 지수

e.g.) 1e9 == 109 == 1,000,000,000

정확한 소수점 값을 비교할 때

round(실수형 데이터, 반올림 하고자 하는 위치-1)

e.g.) round(123.456,2) == 123.46

숫자 사칙연산( +, -, *, /)

(※ 나누기를 할 때에는 소수점까지 써야됨)

a**b: a의 b제곱

a//b: a를 b로 나눈 몫

a%b: a를 b로 나눈 나머지

숫자 관련 유용한 함수 모음

abs(숫자)  #숫자를  절댓값으로  반환
int(a)     #a를 문자열 형태의 숫자나 소수점이 있는 숫자 등을 정수형으로 (소수점x)
int(a,b)   #b진수로 표현된 a를 10진수로
e.g.) int('11',2)  #2진수로 표현된 '11'을 10진수로
hex(a)     #정수 십진수 a를 16진수로
oct(a)     #정수 십진수 a를 8진수로
pow(a,b)   #a**b a의 b제곱
list(range(a))      #0부터 a앞까지 리스트로 
list(range(a,b,c))  #a부터 b앞까지 c만큼 증가하면서 리스트로 
divmod(a,b)         #(a//b,a%b) (몫,나머지)



2. 리스트 자료형

표기법: [ ]

좌우에 대괄호([])가 있으면 된다. 원소로는 아무거나 들어갈 수 있으며, 아무것도 없어도 된다. 순서가 있다. 쉼표(,)를 기준으로 원소를 구분한다. 인덱스는 0부터 시작한다.

비어있는 리스트 선언

a = list()

a = []

리스트 인덱싱

변수/리스트[n]: 인덱스 n에 있는 원소를 가져옴. (이때 n은 정수 또는 변수이다.)

※ 이때 n에 음의 정수를 넣으면 원소를 거꾸로 탐색한다. 즉, 인덱스에서 -1은 마지막 원소를 의미한다.

리스트 슬라이싱

대괄호 안에 콜로(:)을 넣어 연속적인 원소들을 한번에 가져올 수 있다.

[a:b] 이면 a부터 b전 자리까지 있는 원소들을 리스트로 가져온다.

e.g.)

a=[1,2,3,4,5,6,7,8,9]
print(a[1:4]) # 결과는 [2,3,4]

리스트 연산

👉 리스트+리스트 : 두 리스트의 나열
※ 리스트 끼리만 더하기 가능 ('리스트+문자열'은 오류) (문자열도 문자열끼리만)
👉 리스트-리스트 : ☠️ Error ☠️
👉 리스트*n : 리스트를 n번 나열

리스트 컴프리헨션

대괄호 안에 조건문과 반복문을 넣어 리스트를 초기화하는 것이다.

array=[i for i in range(20 if i%2==1)]

위의 코드처럼 리스트 컴프리헨션을 이용했을 때와 아래 코드처럼 반복문과 조건문을 각자 사용했을 때의 array 리스트의 값은 같다.

array=[]
for i in range(20):
    if i%2==1:
        array.append(i)

따라서 짧고 간결한 리스트 컴프리핸션을 이용하는 것이 더 효율적인 코드임을 확인할 수 있다.

리스트 관련 유용한 함수 모음

(이때 w는 리스트 변수를 의미)

w.append(~)    #리스트 맨 오른쪽에 ~를 추가
w.sort()       #리스트 원소들을 사전순(오름차순)으로 정렬
w.sort(reverse=True)   #리스트 원소들을 사전반대순(내림차순)으로 정렬
w.reverse()    #리스트 원소의 순서를 반대로 정렬
w.index(~)     #리스트에서 ~이 어느 자리에 있나( 없는 것을 찾으면 error나옴.)
w.insert(a,b)  #인덱스 a 자리에 b를 넣음
w.remove(a)    #리스트 내의 a를 지움(2개 이상 이면 맨 왼쪽 것만 지움)(없는 원소를 지우려고 하면 에러뜸)
w.pop()        #리스트 내의 맨 마지막에 있었던 것이 출력되고, 리스트에서 삭제됨
w.pop(a)       #리스트 내의 a번째 있었던 것이 출력되고, 리스트에서 삭제됨
w.count(a)     #리스트에서 a 가 몇 개 있나
w.extend([a])  #리스트 뒤에  a를 추가
len(w)         #w 의 길이(w에 들어있는 아이템 갯수)



3. 문자열 자료형

표기법

"a", 'a', """a""", '''a'''

0개 이상의 문자 나열 가능 (공백도 따옴표가 붙어있으면 문자열)

특수 문자들 출력하는 방법

(역슬래시 " \ "입력 후, 원하는 특수문자를 입력)

"\n"    #줄바꿈(개행)
"\t"    #탭(가로)
"\v"    #탭(세로)
"\\"    #문자\
"\'"    #문자'
"\""    #문자"
"\r"    #캐리지 리턴 (앞에 거 지우고 줄바꿈)
"\b"    #백스페이스
"\000"  #널문자

문자열 연산

👉 문자열+문자열 : 두 문자열의 나열
※ 문자열 끼리만 더하기 연산 가능
👉 문자열-문자열 : ☠️ Error ☠️
👉 문자열*n : 문자열을 n번 나열

a="Hello"
b="World"
print(a+" "+b)  #"Hello World"가 출력됨
print(a*3)  #"HelloHelloHello"가 출력됨

[참고] 문자열도 리스트와 마찬가지로 인덱싱과 슬라이싱을 이용할 수 있다.




4. 튜플 자료형

튜플은 리스트와 거의 비슷하다. 따라서 리스트와의 차이점과 주의할 점을 알아보자.

튜플은 Immutable

튜플은 한번 선언된 값을 변경할 수 없다. 즉, 대입연산자 '='이 불가능하다.

👉 리스트는 대괄호[ ]를 이용하여 표현하지만, 튜플은 소괄호( )로 감싸서 표현한다.

👉 튜플이 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙여야 하고, 괄호()는 생략해도 무방하다.

👉 튜플도 순서가 있다. (인덱싱과 슬라이싱 가능)

target=1,  #튜플 자료형으로 (1,)과 동일
target=(1) #숫자 자료형으로 1과 동일



5. 사전(DIctionary) 자료형

key와 value의 쌍을 데이터로 가지는 자료형. 딕셔너리는 mutable로, 값을 변경할 수 있다.

👉 key
하나의 변수. 여러 자료형들이 한번에 들어올 수 있다.
동일한 key 값들이 있을 경우, 마지막의 key에 해당되는 value만 유의미하다.

※ 여기에는 immutable한 자료형들만 들어 갈 수 있다.
이때 immutable한 자료형이란, 수, 문자열, 튜플과 같은 자료형을 의미한다.

👉 value
key에 대응되는 값. (또 다른 딕셔너리가 value로 들어올 수 있다.)

이러한 key-value 쌍으로 구성된 dictionary 자료형을 처리하는 것은 리스트 자료형보다 훨씬 빠르게 동작한다.

dict={1:123,'2':'456'}
a=2
b=3
dict[a]=b  #a라는 key가 없었을 때, dict에 a-b 쌍이 추가로 생성됨. 
           #a라는 key가 있었을 때, 해당 value가 b로 수정됨.
del dict[a] #a key와 그에 대응되는 value를 삭제
dict.keys()   #key들을 모아서 리스트로 보여줌. 이 예시에서는 dict_keys([1,'2'])
dict.values() #key의 value들 값을 모아서 리스트로 보여줌. 이 예시에서는 dict_values([123,'456'])
dict.items()  #모든 key와 value값들을 보여줌. 이 예시에서는 dict_items([(1,123),('2','456')])
dict.get(a)   #a key에 대응되는 value값을 보여줌. 이 예시에서는 None이라는 결과가 나옴.
dict.clear()  #dict값들을 다 삭제. 즉, dict={}이 됨.



6. 집합(Set) 자료형

표기법: set()

👉 중복×
동일한 값 넣을 수 없음

👉 순서x
인덱싱 사용하면 Error

set([1,2,3]) #{1,2,3}과 동일
set("hello") #set(["h","e","l","l","o"])와 동일. {’o’,’l’,’e’,’h’}와도 동일

집합의 연산

👉 합집합

 AㅣB == A.nuion(B) == B.union(A)

👉 교집합

 A&B == A.intersection(B) == B.intersection(A)

👉 차집합

 A-B == A.difference(B)

 B-A == B.difference(A)

e.g.)

a=set([1,2,3,4,5])
b=set([3,4,5,6,7])
print(a|b) #{1,2,3,4,5,6,7}
print(a&b) #{3,4,5}
print(a-b) #{1,2}

집합 관련 함수

s=set([1,2,3])
s.add(4)        #새로운 원소 한 개를 추가하는 것 (여러 개를 추가하려하면 오류 남)
s.update([5,6]) #새로운 원소 여러 개를 추가하는 것 (한 개도 가능)
s.remove(3)     #특정한 원소 한 개를 삭제하는 것




✍✍ 추가 내용

언더바(_)

파이썬에서 반복문 사용시, _ 는 어떤 특정값을 무시하기 위한 용도로 사용되기도한다. 값이 필요하지 않거나 사용되지 않는 값을 _에 할당하기만 하면된다.

e.g.)

for _ in range(5):
    print("Hello World")





0개의 댓글