[해결] 파이썬, 리스트를 이용한 while 문

GunSmoke의 이미지

역시 점프 투 파이썬입니다.

다른게 아니라 다음 예문에서 while에 대한 조건문으로 온 리스트, data가 어떻게 처리되는지 궁금합니다.

import random
 
def random_pop(data):
	number = random.randint(0, len(data)-1)
	return data.pop(number)
 
if __name__ == '__main__':
	data = [1,2,3,4,5]
	while data: print random_pop(data)

data가 리스트이기 때문에 data전체가 random_pop()로 넘어가나요,
아니면 data의 각 요소 1, 2, 3, 4, 5가 차례로 random_pop()으로 넘어가는 것인가요?

요소가 하나씩 넘어간다면 random_pop()에서 항상 random.randint의 범위는 (0, 0)이 되어버리기 때문에 data.pop(number)의 결과는 항상 동일할 것이고...
리스트 전체가 넘어간다면 순회가 발생하지 않게 될 것 같은데...

무엇이 맞는지 알고 싶습니다.

feanor의 이미지

data 전체가 넘어가고, while data: 반복문은 data가 빈 리스트([])가 될 때까지 반복합니다.

GunSmoke의 이미지

그렇군요.

리스트를 pop하면서 리스트 내 요소가 하나씩 줄어들게 되는 것이로군요!!

매번 감사합니다.

大逆戰

大逆戰