반응형
질문
나는 여러 개의 목록을 반환하는 메소드들을 호출하고 있습니다. 이 목록은 비어 있을 수 있습니다. 목록이 비어 있지 않으면 첫 번째 항목을 반환하고, 그렇지 않으면 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_list
가 None
일 수 있는 경우:
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
반응형
댓글