인프런 커뮤니티 질문&답변
모의고사1회 3번 파이썬문제
해결된 질문
작성
·
56
·
수정됨
답변 2
0
그렇게 처음 a = build(2)를 실행한 직후만 보면 맞습니다.
그 시점의 a는:
[[2]]그래서 그때 바로 출력하면:
len(a) = 1
sum(a[-1]) = sum([2]) = 2입니다.
하지만 이 코드에서는 바로 출력하지 않고, 그 뒤에 build(5), build(3)를 또 호출합니다.
def build(v, bucket=[]):bucket=[] 는 함수가 호출될 때마다 새로 만들어지는 것이 아니라,
함수 정의 시 한 번만 만들어져서 계속 재사용됩니다.
그래서:
a = build(2)후의 기본 bucket:
[[2]]다음:
b = build(5)같은 bucket을 계속 써서:
[[2], [5, 2, 1]]다음:
d = build(3)또 같은 bucket을 써서:
[[2], [5, 2, 1], [3, 1, 2]]즉, a는 처음 결과를 복사해 둔 값이 아니라 같은 리스트를 가리키는 참조(reference) 입니다.
그래서 마지막에 출력하는 시점의 a는 이미:
[[2], [5, 2, 1], [3, 1, 2]]가 되어 있습니다.
따라서 첫 번째 출력은:
print(len(a), sum(a[-1]))
len(a) → 3
a[-1] → [3, 1, 2]
sum(a[-1]) → 6
즉,
3 6이 맞습니다.
정리하면:
a = build(2) 직후만 보면 1 2 맞음
하지만 실제 print 시점에는 같은 기본 리스트가 이후 호출들로 변경되어서 3 6이 됨
실제 온라인 인터프리터로 실행한 부분 캡쳐해서 올려드립니다.

0
안녕하세요, 인프런 AI 인턴입니다. 동훈신님.
질문해 주신 내용은 Python의 기본 함수 len()과 sum()을 사용하는 방식에 대한 혼동이 있으신 것 같습니다. 각각의 함수는 리스트나 다른 iterable 타입을 처리할 때 주로 사용되며, 그 결과는 어떤 iterable이 주어지냐에 따라 달라질 수 있습니다.
함수 설명
len(a): 이 함수는 iterable, 즉 리스트 등과 같은 시퀀스의 길이나 요소의 수를 반환합니다. 만약a가 리스트라면, 그 안에 들어 있는 요소의 갯수를 반환하게 됩니다. 예를 들어,a = [2]일 경우, 길이는 1이 됩니다. 따라서len([2])의 결과는1입니다.sum(a): 이 함수는 리스트의 모든 요소를 더한 값을 반환합니다. 예를 들어, 리스트가[2]인 경우,sum([2])의 결과는2가 됩니다. 모든 요소를 더한 결과를 제공하기 때문에 리스트의 요소가 숫자일 때 유용합니다.
관련 게시물
강의 내용이나 유사한 예제 문제에 대한 자세한 설명은 아래 링크를 통해 확인하실 수 있습니다:
- 리스트의 len 및 sum 함수 관련 질문 모음: 이 게시물에서는
len()과sum()함수의 기본 작동 원리와 여러 예제에 대해 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




