본문 바로가기
Python/Python FAQ

Python 첫 번째 항목을 반환하거나 None을 반환하는 파이썬 관용구, Python idiom to return first item or None

by 베타코드 2023. 12. 7.
반응형

질문


나는 여러 개의 목록을 반환하는 메소드들을 호출하고 있습니다. 이 목록은 비어 있을 수 있습니다. 목록이 비어 있지 않으면 첫 번째 항목을 반환하고, 그렇지 않으면 None을 반환하려고 합니다. 이 코드는 작동합니다:

def main():
    my_list = get_list()
    if len(my_list) > 0:
        return my_list[0]
    return None

하지만 이렇게 하는 간단한 한 줄의 관용구가 있어야 할 것 같습니다. 있을까요?


답변


파이썬 2.6+

next(iter(your_list), None)

your_listNone일 수 있는 경우:

next(iter(your_list or []), None)

파이썬 2.4

def get_first(iterable, default=None):
    if iterable:
        for item in iterable:
            return item
    return default

예제:

x = get_first(get_first_list())
if x:
    ...
y = get_first(get_second_list())
if y:
    ...

다른 옵션은 위의 함수를 인라인으로 작성하는 것입니다:

for x in get_first_list() or []:
    # x를 처리
    break # 최대 하나의 항목 처리
for y in get_second_list() or []:
    # y를 처리
    break

break를 피하려면 다음과 같이 작성할 수 있습니다:

for x in yield_first(get_first_list()):
    x # x를 처리
for y in yield_first(get_second_list()):
    y # y를 처리

여기서:

def yield_first(iterable):
    for item in iterable or []:
        yield item
        return
반응형

댓글