여러 개의 시퀀스를 입력받아, 그중 가장 많은 요소를 가진 시퀀스를 반환하는 함수 longest()
를 정의해 보라. 다음은 이 함수의 실행 예이다.
>>> longest([1, 2, 3], (4, 5), [], 'abcdefg', range(5))
'abcdefg'
>>> longest('파이썬', '프로그래밍')
'프로그래밍'
>>> longest(range(10), range(100), range(50))
range(0, 100)
코드
def longest(*sequences):
"""여러 개의 시퀀스를 전달받아 요소의 개수가 가장 많은 시퀀스를 반환한다."""
winner = []
for sequence in sequences:
if len(winner) < len(sequence):
winner = sequence
return winner
# 함수의 동작 확인
print(longest([1, 2, 3], (4, 5), [], 'abcdefg', range(5)))
print(longest('파이썬', '프로그래밍'))
print(longest(range(10), range(100), range(50)))
실행 결과
abcdefg
프로그래밍
range(0, 100)
*sequences
를 정의한다.winner
를 정의하고, 초깃값으로 요소의 개수가 0개인 시퀀스를 대입한다.sequences
에 전달된 시퀀스들을 순회하면서 len()
함수를 이용해 시퀀스의 크기를 비교한다. 현재 시퀀스의 크기가 지금까지 발견한 가장 큰 시퀀스보다 더 큰 경우, 가장 큰 시퀀스를 기억하는 변수에 현재 시퀀스를 대입한다.winner
변수에는 가장 큰 시퀀스가 대입되어 있다. 이 시퀀스를 반환한다.[]
를 반환하고 있는데, None
을 반환하게 했거나 오류가 발생하게 두었더라도 틀린 답이 아니다.max()
함수를 이용하여 요소가 가장 많은 시퀀스를 구하는 것도 좋은 방법이다. max()
함수를 사용할 때 key
매개변수에 비교에 사용할 함수를 인자로 전달할 수 있다. 요소의 개수를 이용해 비교하기 위해서는 len()
함수를 인자로 지정하면 된다.def longest(*sequences):
return max(*sequences, key=len)