-
[Python] 문법정리1 - zip(), lambda 함수, for inCoding Test 2022. 11. 6. 13:58
* -= 와 += 이렇게 쓰는 거 헷갈리지 않기
def solution(absolutes, signs): return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))
def solution(absolutes, signs): res = [] for idx in range(len(signs)): if signs[idx] == True: res.append(absolutes[idx]) else: res.append(-absolutes[idx]) return sum(res)
def solution(a, b): return sum([x*y for x, y in zip(a,b)])
zip() : 순회 가능한 객체들을 매개변수로 받아서, 각 객체들이 갖고 있는 요소들을 짝지어서 튜플 형태로 리턴해준다. 따라서 for pair in zip(A, B) 형태로 사용하기 좋다. pair 뿐 아니라 a, b 로 전달해서 병렬 처리로 전달해줄 수도 있다.
zip() 으로 묶은 뒤 dict()로 감싸면 딕셔너리 형태로 변환된다. 객체들의 길이가 다를 때는 순서대로 앞에서만 묶이고 짝이 없는 데이터는 버려지므로 유의해야 한다.
solution = lambda x: sum(range(10)) - sum(x)
solution = lambda x, y: sum(a*b for a, b in zip(x, y))
lambda 함수는 함수를 한 줄로 간단하게 쓰기 위해서 사용한다. lambda x,y: x+y 처럼 선언한다.
a=lambda x,y : x+y print(a(1,2)) #3
a=lambda x,y : x+y print(a(1,2)) #map(fn, seq) #파이썬 3에서는 맵으로 나온 결과값을 리스트로 묶어줘야 새로운 리스트가 리턴된다. b=list(map(lambda x:x**2, range(4))) print(b) #[0, 1, 4, 9] #reduce(fn, seq) #각 원소를 하나씩(짝지어서) 함수를 작동시키고 시퀀스에 누적시켜서 마지막 결과값을 출력해준다. from functools import reduce c=reduce(lambda x,y:x+y, range(5)) d=reduce(lambda x,y:y+x, 'abcde') #문자열 순서를 거꾸로 만들어줌 print(c) print(d) #filter(fn, seq) #각 원소를 함수에 적용하는데, 결과값이 참인 원소만 뽑아서 새로운 리스트로 리턴시켜준다. #파이썬 3에서는 맵으로 나온 결과값을 리스트로 묶어줘야 새로운 리스트가 리턴된다. f=list(filter(lambda x: x<5, range(10))) g=list(filter(lambda x: x%2==0, range(10))) print(f) print(g)
def solution(n): return "".join(["수박"[i%2] for i in range(n)])
join()
#join은 리스트의 문자열을 하나의 문자열로 합쳐준다. #split은 하나의 문자열을 문자열의 리스트로 분리해준다. str='hi my name is Justin' str2='hi, my, name, is, Justin' a=str.split() d=str2.split(', ') print(a) #['hi', 'my', 'name', 'is', 'Justin'] print(d) #['hi', 'my', 'name', 'is', 'Justin'] #요소별로 구분해줄 문자열을 전달해주면 된다. b="".join(a) print(b) #himynameisJustin c=" ".join(a) print(c) #hi my name is Justin #요소들을 연결해줄 문자열을 전달하고 조인을 쓰면 된다.
for in
#파이썬에서는 for in, 한가지 방식의 for문만을 제공한다 #for item in iterable: #반복할 구문 #iterable는 반복가능한 객체들을 의미한다. # 여기에는 리스트, 딕셔너리, 세트, 스트링, 튜플, 바이츠가 있다. #객체의 요소들을 돌면서, 아이템을 가지고 함수를 동작시킨다. #range(start, end, step) #다른 객체 형태로 변환해줘야 결과값이 리턴된다. print(list(range(5))) #[0, 1, 2, 3, 4] for i in range(5): print(i) #객체의 길이와 인덱스를 이용해서 for을 도는 것보다 #객체 자체와 아이템을 이용해서 for문을 도는 것을 파이썬에서 권장한다 #enumerate(obj) #객체의 인덱스 번호와 원소값을 튜플 형태로 리턴해준다. #몇 번째 반복문인지 확인할 때 유용하다. a=[3,5,6,7,9,30] for i in enumerate(a): print(i) ''' (0, 3) (1, 5) (2, 6) (3, 7) (4, 9) (5, 30) '''
https://www.daleseo.com/python-zip/
파이썬의 zip() 내장 함수로 데이터 엮기
Engineering Blog by Dale Seo
www.daleseo.com
3.5 람다(lambda)
오늘은 람다 형식과 그것을 이용하는 여러 가지 함수들에 대해서 알아보겠습니다. 당장 완벽하게 소화하실 필요는 없을 것 같구요, 가벼운 마음으로 이런 것이 있다는 정도만 아셔도 되…
wikidocs.net
19. for in 반복문, Range, enumerate
## 1. for in 반복문 - 여타 다른 언어에서는 일반적인 for문, foreach문, for of문등 여러가지 방식을 한꺼번에 지원하는 경우가 많습니다. - Python…
wikidocs.net
'Coding Test' 카테고리의 다른 글
[Python] 문법정리 while, if, continue / sort(reverse=True) / reverse() (0) 2022.11.12 [JS] 프로그래머스 코딩테스트 Lv. 1 ) 나누어 떨어지는 숫자 배열 (0) 2022.11.01 [JS] 프로그래머스 코딩테스트 Lv. 2) 올바른 괄호 (0) 2022.10.27 [JS] 프로그래머스 코딩테스트 Lv. 2 ) 최솟값 만들기 (0) 2022.10.24 [JS] 프로그래머스 코딩테스트 Lv. 2 ) 최댓값과 최솟값 (0) 2022.10.24