[List, 고급] 리스트 병합 및 리스트 위치기반으로 조합 (merge)

출처 : python 30 seconds of code (CC0-1.0 라이센스)

리스트안의 리스트의 형태로 두개 혹은 두개이상의 리스트를 병합하고, input 리스트의 위치를 기반으로 각각의 요소를 겹합하세요.

1) max()함수와 list comprehension를 사용하여 주어진 arguments 중 가장 긴 길이를 얻으세요. (max_length variable)
2) range()함수를 이용해서 max_length variable의 만큼 반복되도록 합니다.
3) 만약 리스트가 max_length보다 짧으면 나머지 항목에 대해 fill_value(defaults = None)를 사용합니다.

해당 문제는 파이썬 내장함수인 zip()와 itertools.zip_longest()와 유사항 동작을 수행합니다.

EXAMPLES

merge(['a', 'b'], [1, 2], [True, False])  # 출력: [['a', 1, True], ['b', 2, False]]
merge(['a'], [1, 2], [True, False])  # 출력: [['a', 1, True], [None, 2, False]]
merge(['a'], [1, 2], [True, False], fill_value = '_')  # 출력: [['a', 1, True], ['_', 2, False]]

=============== 아래의 코드에 완성 ===============

def merge(*args, fill_value = None):
    pass

이승현 922

M 2020년 12월 11일 4:17 오후

목록으로
2개의 답변이 있습니다. 1 / 1 Page
def merge(*args, fill_value = None):
    max_len = max(list(map(len,args)))
    result_list = []
    for i in range(max_len):
        insert_list = []
        for arg in args:
            try:
                insert_list.append(arg[i])
            except:
                insert_list.append(fill_value)
        result_list.append(insert_list)
    return result_list

힝힝 코드 넘나 더러운것

저요저요서평단

M 2021년 1월 8일 8:54 오전

이건 어때여?

def merge(*args, fill_value=None):
    max_length = max(len(arg) for arg in args)
    newlist = []
    for i in range(max_length):
        newlist.append([arg[i] if i < len(arg) else fill_value for arg in args])
    return newlist

나름 스윗한 코드라고 생각하는데...

느릿느릿

M 2021년 5월 7일 1:37 오전