Python

2020. 08. 26 python

씬프 2020. 8. 26. 08:50
반응형

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