문자열에서 실행계수는 내가처럼 보이는 문자열을
>>> from itertools import groupby
>>> from collections import Counter
>>> strs = 'TTHHTHHTHHHHTTHHHTTT'
>>> Counter(k for k, g in groupby(strs))
Counter({'T': 5, 'H': 4})
: H
의 는문자열에서 실행계수는 내가처럼 보이는 문자열을
>>> from itertools import groupby
>>> from collections import Counter
>>> strs = 'TTHHTHHTHHHHTTHHHTTT'
>>> Counter(k for k, g in groupby(strs))
Counter({'T': 5, 'H': 4})
: H
의 는당신은 itertools.groupby
및 collections.Counter
의 조합을 사용할 수 있습니다 키에 기초그룹 항목.
>>> from pprint import pprint
>>> pprint([(k, list(g)) for k, g in groupby(strs)])
[('T', ['T', 'T']),
('H', ['H', 'H']),
('T', ['T']),
('H', ['H', 'H']),
('T', ['T']),
('H', ['H', 'H', 'H', 'H']),
('T', ['T', 'T']),
('H', ['H', 'H', 'H']),
('T', ['T', 'T', 'T'])]
여기서 첫 번째 항목은 항목 그룹화하고 list(g)
가 관련된 그룹 인에 기초하여 키 (k
)는 (기본 키로는 반복 가능한 자체의 항목 인) 그 열쇠. key
부분에만 관심이 있으니 k
을 collections.Counter
으로 전달하여 원하는 답을 얻을 수 있습니다. 다양한
, re
기반 접근 방식
import re
letters = ['H', 'T']
matches = re.findall(r'({})\1*'.format('|'.join(letters)), 'TTHHTHHZTHHHHTTHHHTTT')
print matches
['T', 'H', 'T', 'H', 'T', 'H', 'T', 'H', 'T']
[(letter, matches.count(letter)) for letter in letters]
[('H', 4), ('T', 5)]
큰 하나는, 파이썬 GROUPBY는 SQL 하나, 감사, 하나에서 다른 작동하는지 몰랐어요. 파이썬으로 일할 시간이 없다는 것이 유감입니다. ( –