이와 같은 목록이 주어지면
arr = [1, 1, 2, 2, 2, 3, 3]
각 요소의 발생 횟수를 계산하고 새 목록에 저장하지만 다음과 같은 목록 이해를 사용하고 싶습니다.
occ = [arr.count(e) for e in arr]
그러나 원래의 인쇄 출력이 array: [1, 1, 2, 2, 2, 3, 3]
대신 [2, 3, 2]
하는은 각각의 입력이 배열의 1, 2, 3 회 발생 횟수.
왜 그런 일이 발생하고 어떻게 해결합니까?
주의 : 가능한 경우 목록 이해력을 사용해야합니다.
글쎄, 그 이유는 당신이 할 때
arr = [1, 1, 2, 2, 2, 3, 3]
및 arr.count (1), 목록 arr에서 숫자 1의 발생 횟수를 얻을 수 있습니다. 그리고 당신이 할 때
occ = [arr.count(e) for e in arr]
실제로 arr.count (1)을 2 번 계산 한 다음 arr.count (3)를 세 번 계산 한 다음 arr.count (3)를 두 번 계산합니다.
따라서 숫자를 반복하지 않으려면 목록에서 1, 2, 3 인 고유 한 숫자를 세는 것이 좋습니다. 따라서 올바른 코드는 다음과 같습니다.
occ = [arr.count(e) for e in set(arr)]
이제 목록을 인쇄하면 예상대로 [2,3,2]가 표시됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다