반응형
1) bifurcate : 영어의 뜻은, 물이 둘로 갈라지는 것, 2가지로 나누는 함수.
def bifurcate(lst, filter):
return [
[x for i, x in enumerate(lst) if filter[i] == True],
[x for i, x in enumerate(lst) if filter[i] == False]
]
enumerate(lst) : 반복문에서 리스트의 값을 인덱스와 함께 튜플로 반환함. (idx, value) 형태.
return되는 값은 리스트 속의 리스트 형태로 반환됨.
def bifurcate(lst, filter):
return [
[x for i, x in enumerate(lst) if filter(x) >= 4],
[x for i, x in enumerate(lst) if filter(x) < 4]
]
위와 같이 문자열 리스트를 받았을 때, 문자열의 길이에 따라 나눌 수 있을 것 같음.
2) union_by
def union_by(a, b, fn):
_a = set(map(fn, a))
return list(set(a + [item for item in b if fn(item) not in _a]))
a와 b에 fn을 적용한 후 중복되지 않는 요소를 반환한다.
_a에 a에 fn을 적용한 값을 set 형태로 저장한다. (set은 집합, 중복없음)
b에 fn을 적용한 값이 _a에 없는 값인 경우와 a에 속한 값을 반환한다.
set을 쓰는 경우 집합의 연산이 가능하다. (합집합, 중복은 제거된다.)
union_by(['foo', 'fooo'], ['wo', 'woo', 'woooo'], len)
# ['foo', 'wo', 'fooo', 'woooo']
'Python' 카테고리의 다른 글
Django User 모델 정리 (0) | 2021.03.17 |
---|---|
2020. 08. 25 python (0) | 2020.08.25 |
2020. 08. 24 python (0) | 2020.08.24 |