Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

연속 요소의 쌍을 계산하는 Python 프로그램

<시간/>

숫자 문자열 s에 소수의 숫자가 포함되어 있다고 가정합니다. 숫자는 여러 번 나타날 수 있습니다. 우리는 s에서 어떤 숫자가 연속적으로 몇 번 발생했는지 나타내는 쌍(digit, count)을 반환해야 합니다. 이 문제를 해결하기 위해 itertools 라이브러리에 있는 groupby() 함수를 사용할 수 있습니다. 이렇게 하면 각 항목이 첫 번째 위치에 있고 다른 groupby 개체가 두 번째 위치에 있는 내부에 하나의 반복자 개체가 반환됩니다. 각 쌍에 대한 groupby 개체의 수를 계산해야 합니다.

따라서 입력이 s ="11522226551"과 같으면 출력은 [(1, 2), (5, 1), (2, 4), (6, 1), (5, 2), ( 1, 1)] 시작 부분에 1이 두 번 나타난 다음 단일 5가 나타난 다음 4개의 2가 나타나는 방식으로 표시되기 때문입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • it :=s에 대한 groupby 함수 호출
  • ret :=새 목록
  • 각 쌍(숫자, gp)에 대해 다음을 수행합니다.
    • ret에 (gp 목록의 숫자와 길이) 삽입
  • 반환

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

from itertools import groupby

def solve(s):
   it = groupby(s)
   ret = []
   for digit, gp in it:
      ret.append((int(digit), len(list(gp))))
   return ret

s = "11522226551"
print(solve(s))

입력

"11522226551"

출력

[(1, 2), (5, 1), (2, 4), (6, 1), (5, 2), (1, 1)]