어제 SQL을 했으니, 오늘은 파이썬을 해보기로 했다.
학습한 내용은 아래와 같다
1. 한 줄로 쓰기
예시)
def solution(s):
return s.isdigit() and len(s) in (4,6)
is.digit 이면서 length가 4 혹은 6인 것을 모두 True 하는 것
이런 식으로 많은 것들을 한 줄로 쓸 수 있다.
2. map과 lambda > 한 줄 쓰기 콤비
예시)
def solution(s):
s = s.split(" ")
new2 = []
for char in s:
new = ""
for i in range(len(char)):
if i%2:
new+=char[i].lower()
else:
new+=char[i].upper()
new2.append(new)
return " ".join(new2)
이랬던 것이
def solution(s):
return " ".join(map(lambda x: "".join([a.lower() if i % 2 else a.upper() for i, a in enumerate(x)]), s.split(" ")))
좀 길지만 한 줄이 되었다.
a = [1.2, 2.5, 3.7, 4.6]
a = list(map(int, a))
print (a)
[1, 2, 3, 4]
################################
(lambda x,y: x + y)(10, 20)
30
map은 iteration의 한 종류로 위의 예시는 list a에 있는 수들을 iterate해 int 함수에 넣고, 이를 다시 list화 한 것
lambda는 일종의 한 줄짜리 함수로 예시는 변수 x,y가 있고, 동작은 x+y일 때, x=10이고 y=20이다 를 뜻한다.
3. math 모듈의 LCM과 GCD 함수
예시)
import math
#n과 m의 최대공약수, 최소공배수 찾기
def solution(n, m):
return [math.gcd(n,m), n*m/math.gcd(n,m)]
def solution2(n, m):
return [math.gcd(n,m), math.lcm(n,m)]
#lcm 함수는 python 3.9부터 가능
최소공배수(Least Common Multiple)와 최대공약수 (Greatest Common Divisor)를 함수를 활용해 찾을 수 있다.
4. 진수 바꾸기
예시)
a) 10진법을 n진법으로
answer = ''
while number>0: # number가 0이 될 때 까지 반복
number, mod = divmod(number, n) # 몫과 나머지를 반환해주는 divmod 함수
# number //= n
answer += str(mod) # n으로 나눈 나머지를 answer에 추가
print(answer[::-1]) # answer를 뒤집어주면 n진수가 된다
#############################
bin() # 2진법으로
oct() # 8진법으로
hex() # 16진법으로
10진수를 n진수로 바꾸는 법은
n으로 나눈 나머지를 순서대로가 아닌 거꾸로 읽어주면 n진법 수가 된다.
위의 예시는 numer를 n으로 나누며 number가 존재할 때까지 반복하 그 나머지를 모아 뒤집는다.
b) n진법을 10진법으로
int(string, base)
기본적으로 int 함수를 사용하면 base진수의 string으로 된 수가 10진수로 return 된다.
'오늘 나는 (TIL)' 카테고리의 다른 글
[TIL 240701] datediff, window function, cominations & permutations (0) | 2024.07.01 |
---|---|
[TIL 240628] Pivot Table, Window Function (0) | 2024.06.28 |
[TIL 240627] union, update, insert, delete, multiple_join (0) | 2024.06.27 |
[TIL 240626] Where 절과 Having 절, Inline View, Scalar Subquery (0) | 2024.06.26 |
[TIL 240624] Where 문과 Subquery, With 문 (0) | 2024.06.24 |