파이썬 enumerate사용하여 max값 찾을 때 질문 있습니다.
조회수 828회
queue = [1, 2, 3, 4] #우선순위 값만을 저장한 큐입니다.
queue = [(i, idx) for idx, i in enumerate(queue)] #(우선순위, 인덱스)양식으로 저장한 큐입니다.
위 상태에서 우선순위인 값이 가장 높은 요소를 찾으려 할 때, max(queue, key=lambda x: x[0])[0]
라고 써있는데, 마지막 [0]
이 왜 필요한 것인지 궁금합니다.
max(queue, key=lambda x:x[0])
만 써도 (우선순위, 인덱스)양식으로 저장되있어서 첫번째 인자인 우선순위 중 최대값을 찾을 수 있는 거 아닌가요?
추가적으로 max(queue, key=lambda x: x[0][0])
로 작성시 에는 결과가 어떻게 다른지 궁금합니다.
답변해 주셔서 감사합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
queue = [(i, idx) for idx, i in enumerate(queue)]
에서 queue 값은[(1,0),(2,1),(3,2),(4,3)]
와 같이 생기는데max(queue, key=lambda x:x[0])
에서는 queue 에서 튜플에 대한 첫번째 값 기준으로 max 값을 도출하기 때문에 해당 max 함수의 결과는 (4,3) 이므로 이 값에서 첫번째 값을 갖고 온 것 뿐입니다.해당 튜플에 대해서 값이 처음 리스트 생성할때와 다르게 가변적일 경우라면
a = max(queue, key=lambda x: x[0]); print (max(a))
와 같이 작성하셔야 합니다.그러므로 질문 내용에
x[0][0]
은(1, 0)
튜플로 가정해서 말씀 드리면 불가능하므로 에러가 발생할것입니다.감사합니다
댓글 입력