brunch

You can make anything
by writing

C.S.Lewis

by 찐님 May 14. 2024

Python의 신기한 문법 정리

fastAPI를 시작하기 전에

언어마다 문법이 다른것은 당연하지만, 유독 Python의 문법은 신기하게 생겼다.

새롭게 알게되는 문법이 있을 때마다 주기적으로 추가할 예정이다. 





1. list Slice (배열 자르기)


자바스크립트에서는 slice(start, end) 메소드를 가지고 배열을 자를 수 있었다. 

파이썬은 배열의 인덱스 범위를 선택하여 자를 수 있다. 


arr = [1, 2, 3, 4, 5] 라는 배열이 있다고 가정해보자. 


# 기본 형태 

arr[start : end : step]


start와 end는 배열의 인덱스 번호를 의미하니 넘어가고 step이라는 세번째 인수가 낯선 개념이다. 

배열의 start부터 end사이에 증가/증감하는 단위를 의미한다. 


# arr[1:4:2]     // [2, 4] 1부터 시작하여 4까지 2씩 증가하는 수를 리스트로 만듦

# arr[::-1]. // [5, 4, 3, 2, 1]  배열의 인덱스를 역순으로 정렬

# arr[2::2] // [3, 5]  2부터 시작하여 마지막 인덱스까지 2씩 증가하는 수를 리스트로 만듦






2. List Comprehension (리스트 컴프리헨션)


파이썬에서 직관적으로 리스트를 생성하는 방법이다. Javascript에서는 볼 수 없는 형태라 신기했다. 

대괄호 안에 반복문을 사용하여 리스트를 생성한다. (조건문과 반복문은 중첩해서 사용 가능)


[i for i in range(5)]   //  [0, 1, 2, 3, 4]

[i for i in range(1, 11) if i % 2 == 0]  //  [2, 4, 6, 8, 10]





3. Dictionary Comprehension (딕셔너리 컴프리헨션)


리스트 컴프리헨션과 비슷하지만 딕셔너리(객체)에서 사용하는 문법이다. 

대괄호가 아닌 중괄호({ }) 안에 반복문과 조건문을 사용한다. 


name = ["춘식이", "라이언", "어피치"]
age = [23, 14, 42]

data = {key: value for (key, value) in zip(name, age)}
 
# 출력결과
{'왕춘삼': 23, '김덕팔': 14, '황갑득': 42}





4. Dictionary의 get()


Python 딕셔너리 타입에서 내가 찾고자하는 key의 value를 get메소드를 통해 가져올 수 있다. 

만약 key가 없는 경우 none을 반환하기 때문에 에러가 발생하지 않는다. 

dict[key] 와 같은 방법으로 찾는 것은 JavaScript에도 존재하는 방식이라 새롭지 않았으나 

get은 유용하게 쓰일 같았다. 





4. pop()  - 특정 배열 인덱스 삭제하기


JavaScript같은 경우, shift와 pop을 이용해서 배열의 첫번째 인덱스와 마지막 인덱스를 제거할 수 있다. 

하지만 중간에 있는 특정 위치의 인덱스를 삭제하는 방법은 비교적 까다로운 편이다. 


python에도 pop()메소드가 존재한다. 동일하게 배열의 마지막 요소를 삭제하지만, 

괄호안에 숫자를 적어주면 그 위치의 인덱스를 제거한다. 


arr = [0, 1, 2, 3]
arr.pop(1)   # 1번째 원소 리턴 후 삭제




브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari