[List, 중급] 리스트의 분기문제 (bifurcate)
출처 : python 30 seconds of code (CC0-1.0 라이센스)
주어진 필터 리스트를 바탕으로 주어진 값을 두개의 그룹으로 나누세요.
1) 필터 리스트를 기반으로 그룹에 요소를 추가하기 위해, list comprehension과 zip()을 사용하세요.
2) 만약, 필터가 True이면 첫 번째 그룹에 추가하고, 아니면 두번째 그룹에 추가하세요.
EXAMPLES
bifurcate(['beep', 'boop', 'foo', 'bar'], [True, True, False, True]) # 출력: [ ['beep', 'boop', 'bar'], ['foo'] ]
=============== 아래의 코드에 완성 ===============
def bifurcate(lst, filter):
pass
이승현 님 640
M 2020년 12월 11일 4:16 오후
3개의 답변이 있습니다. 1 / 1 Page
def bifurcate(lst, filter):
rst = [[],[]]
[rst[0].append(l) if f else rst[1].append(l) for l,f in zip(lst,filter)]
return rst
저요저요서평단 님
2021년 1월 7일 9:27 오후
print([list(zip(bifurcate[0], bifurcate[1]))[i][0] for i in range(len(list(zip(bifurcate[0], bifurcate[1])))) if list(zip(bifurcate[0], bifurcate[1]))[i][1]])
# ['beep', 'boop', 'bar']
zip()을 사용하면 더 복잡해 지는 것 같아.
zip() 없이 하면...
print([bifurcate[0][i] for i in range(len(bifurcate[0])) if bifurcate[1][i]])
# ['beep', 'boop', 'bar']
sictomm 님
M 2021년 1월 30일 4:01 오후
def bifurcate(lst, filter):
zipped = zip(lst, filter)
filtered_true = [i for i,f in zipped if f]
filtered_false = [item for item in lst if item not in filtered_true]
return [filtered_true, filtered_false]
zip이 iterator였군요. ㅎ
wjpark11 님
M 2021년 4월 23일 10:11 오전