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

Map 함수를 사용하는 Python의 이진 문자열에서 연속 1의 최대 길이

<시간/>

때때로 숫자의 이진 표현을 다룰 때 숫자에 연속 1이 몇 개 있는지 알아내야 할 수도 있습니다. 이 기사에서는 이를 알아낼 수 있는 두 가지 방법을 보여줍니다.

분할 및 지도 사용

파이썬의 split 함수는 주어진 문자열을 여러 문자열로 분할하는 데 사용할 수 있습니다. 우리는 그것을 0으로 나누고 map 함수를 사용하여 생성된 분할 중에서 최대 길이를 찾습니다.

예시

data ='11110000111110000011111010101010101011111111'def Max_len_cons_1(data):print("연속되는 최대 개수:",max(map(len,data.split('1_len,Max)))) 

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

최대 연속 수:8

정규 표현식 사용

파이썬의 re 모듈은 연속 1의 최대 수를 계산하는 데에도 사용할 수 있습니다. 여기에서 하나 이상의 1이 존재함을 나타내는 1+ 패턴을 찾습니다. 그런 다음 해당 패턴 중 최대 길이를 찾습니다.

예시

data ='11110000111110010011'import rethe_ones =re.findall(r"1+", data)print("자신의 블록:",the_ones)print("연속된 1의 최대 수 =", len(max( the_ones, 키=len)))

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

1의 블록:['1111', '11111', '1', '11']연속 1의 최대 개수 =5