python 문법 정리

aaron lee·2024년 10월 10일

최초 발행일 2020-05-25

1. 배열의 새로운 인덱스(해당 인덱스는 비어있는 상태)로 접근하여 값을 할당할 수 있는 자바스크립트와 달리 파이썬에서는 이것이 불가능하다.

//javascript
var arr = [1];
arr[1] = 2; // arr는 [1, 2]
#python
arr = [1]
arr[1] = 2  #IndexError: list assignment index out of range

#파이썬에서는 append 메서드로 배열에 순차적으로 엘리먼트를 추가해야한다
arr.append(2) # arr [1, 2]

2. 파이썬 삼항연산자는 다음과 같이 사용해야 한다. 자바스크립트의 ? 와 다르다.

a = 10
b = 20
result = (a-b) if a == b else (a+b)    # 결과는 a+b = 30

3. for 문에서 배열의 엘리먼트와 인덱스 구하기

a = [1, 2, 3]
for idx, val in enumerate(a):
    print(idx, val)

"""
0 1
1 2
2 3
"""

4. 파이썬에서는 후위표기법, 전위표기법 ++ 가 없다. 따라서 상수를 담고 있는 변수를 증가시키려면 다음과 같이 해야한다.

count = 0
# count++ -> 런타임에러
count += 1

5. 파이썬에서 해당 문자열이 숫자인지를 판별하기 위한 함수는 isdigit()이 있다.

'2'.isdigit() #True
'*'.isdigit() #False

6. eval 함수를 통해 문자열로 된 수학 계산식을 수행할 수 있다. 주어진 문자열 사이에 공백이 있어도 정확하게 동작한다.

eval("2 * 3") # 6
eval("10-3") # 7
eval("2" + "*" + "3" + "-" + "2") # 4

7. is 와 == 의 차이는 is는 변수가 같은 객체를 가리키면 True, ==는 변수가 같은 값을 가지면 True이다.

a = [1, 2]
b = a
c = [1, 2]

a is b # True
a is c # False
a == c # True

8. 문자열의 아스키 코드와 아스키 코드로 해당 문자열을 얻는 방법

ord('a') #97
chr(97) # 'a'

9. 숫자 소수점 표시

파이썬 숫자를 소수점 2자리에서 반올림을 하고 싶으면 round 함수를 사용하면된다.

round(10.123, 2) #10.12
round(10.126, 2) #10.13

하지만 round 함수는 끝자리가 0이라면 출력을 하지 않는다.

round(300/3, 2) # 100.0
round(100.00, 2) # 100.0

이럴 때는 format 함수를 사용하여 숫자 서식을 지정할 수 있다. 폭은 필드영역의 공백 수를 결정하고, 소수점 정밀도는 소수점 아래 표현할 숫자의 수를 결정한다.폭은 정수 부분만을 지칭하는 것이 아닌, 소수점 아래 표현된 숫자들까지 지칭한다.

format(item, 폭(width).소수점정밀도(precision)f)
format(round(100.00, 2), ".2f") #100.00
format(round(100.127, 2), ".2f") # 100.13

10. 숫자 올림, 내림

`math` 모듈을 사용한다.

올림

import math #math 모듈을 먼저 import해야 한다.
math.ceil(-1.11)    #결과는 -1
math.ceil(1.11) #결과는 2

내림

>>> import math
>>> math.floor(1.11)    #결과는 1
>>> math.floor(-1.11)   #결과는 -2

11. 출력 sep=''

print 함수를 사용할때 마지막 인자로 sep='!'를 줘서 출력하고자 하는 것들의 사이마다 !를 추가해서 출력되게 할 수 있다.

print(1, 2, 3, 4, sep="!") # 1!2!3!4

12. 파이썬 zip

zip 함수는 다음과 같이 두 개 이상의 배열에 대해 각 배열의 같은 인덱스끼리 그룹핑을 해준다.

>>> for e in zip([1, 2, 3], [4, 5, 6]):
...     print(e)
...
(1, 4)
(2, 5)
(3, 6)
>>> for e in zip([1, 2, 3], [4, 5, 6], [7, 8, 9]):
...     print(e)
...
(1, 4, 7)
(2, 5, 8)
(3, 6, 9)

zip의 인자로 들어간 배열중 길이가 더 긴 배열의 엘리먼트는 무시된다.

>>> for e in zip([1, 2, 3], [4, 5, 6, 7]):
...     print(e)
...
(1, 4)
(2, 5)
(3, 6)

13 isinstance

isinstance([], list) #True
isinstance(1, list) # False

14. reversed(str) 의 결과는 iterable이다.

chr = 'asdf'
''.join(list(reversed(chr))) #fdsa

15. json.loads, json,dumps 사용법

import json
def sort_by_price_ascending(json_string):

    input = json.loads(json_string)
    result = sorted(input, key=lambda obj: (obj["price"], obj['name']))
    return json.dumps(result)

sort_by_price_ascending('[{"name":"eggs","price":1},{"name":"coffee","price":1.5},{"name":"rice","price":4.04} ,{"name":"aoffee","price":1.5}]')

# output
# '[{"name": "eggs", "price": 1}, {"name": "aoffee", "price": 1.5}, {"name": "coffee", "price": 1.5}, {"name": "rice", "price": 4.04}]'

16. sorted 정렬 기준 2가지 주기

예시 위와 동일

profile
소프트웨어 엔지니어

0개의 댓글