파이썬 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)튜플로 가정해서 말씀 드리면 불가능하므로 에러가 발생할것입니다.

    감사합니다

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)