[python] 파이썬을 파이썬답게

파이썬을 파이썬답게

진행중인 강의는 여기서 확인할 수 있다.

프로그래머스에서 진행하는 온라인코스로, 다른 언어에 익숙한 사람들을 위한 더 파이썬스럽게 코드를 작성하는 법을 알려주는 코스다.


🔷 파트1. Python 꿀팁

정수를 담은 이차원 리스트, mylist 가 solution 함수의 파라미터로 주어집니다. mylist에 들은 각 원소의 길이를 담은 리스트를 리턴하도록 solution 함수를 작성해주세요.

제한 조건
mylist의 길이는 100 이하인 자연수입니다.
mylist 각 원소의 길이는 100 이하인 자연수입니다.
input output
[[1], [2]] [1,1]
[[1, 2], [3, 4], [5]] [2,2,1]

image-20210324121237271

내가 딱 코드를 첫번째처럼 짰는데, 그렇다면 이 강의를 수강해야 한다고 하더라..ㅎㅎ 위코드가 문제가 있다기 보다는, 파이썬 보다 Cjava코드에 가깝다는게 그 이유이고, 코드를 두번째처럼 짤 수 있도록 만드는 것이 이번 수업의 목표이다.

느낀점

map 함수를 intstr로만 바꿔서 써봤었는데, len으로 길이같은 것도 구할 수 있다는 것을 알았다.


🔷 파트2. 정수 다루기

2.1. 몫과 나머지 - divmod

7을 3으로 나눈 몫과 나머지를 구해야 하는 경우 보통은 다음과 같이 풀 수 있다.

a = 7
b = 5
print(a//b, a%b)

파이썬에서는 divmod와 unpacking을 이용하면 다음과 같이 코드를 짤 수 있다.

a = 7
b = 5
print(*divmod(a, b)) # 2 1

2.2. n진법으로 표기된 string을 10진법 숫자로 변환하기 - int 함수

보통 사람들은 for 문을 이용해 숫자를 곱해가며 문제를 풉니다.

num = '3212'
base = 5

answer = 0
for idx, number in enumerate(num[::-1]):
    answer += int(number) * (base ** idx)

파이썬의 int(x, base=10) 함수는 진법 변환을 지원합니다.

num = '3212'
base = 5
answer = int(num, base)


🔷 파트3. Str 다루기

3.1. 문자열 정렬하기 - ljust, center, rjust

공백을 포함해서 총 n자리의 str을 출력하는 중, 문자열 s의 위치를 왼쪽, 가운데, 오른쪽으로 정렬하고 싶다면 어떻게 해야할까? 보통은 for문을 이용해 기존 s에 공백문자(' ')를 붙이는 작업을 해준다. 그러나 string 의 ljust, center, rjust와 같은 메소드를 사용하면 훨씬 간편하다.

s = '가나다라'
n = 7

s.ljust(n) # 좌측 정렬
s.center(n) # 가운데 정렬
s.rjust(n) # 우측 정렬

댓글남기기