<p>1)如前所述,当<code>streak_counter == 1</code>时,您应该增加序列计数,因为当您检测到条纹</em>时,您将其增加1<em>。你可能会得到0,因为连续11次的几率要低得多</p>
<p>2)正如Błotosmętek所说,只制作一个字符串(<code>str1 = ''.join(coint_list)</code>)然后使用字符串计数方法(<code>str1.count('HHHHHH')</code>)会更容易。如果要计算所有6次长度的运行(例如<code>HHHHHHH</code>=2次运行),请仔细阅读<a href="https://stackoverflow.com/questions/5616822/python-regex-find-all-overlapping-matches">answers here.</a></p>
<p>更新:我做了一些测试,发现链接答案中的regex方法对于所有6次运行都要快得多。这是我使用的测试脚本</p>
<pre><code>from random import randint as randi
import re
import timeit
# Create test list
longg = ['H' if randi(0,1) == 1 else 'T' for i in range(10000)]
longg = ''.join(longg)
def regVer(s):
matches = re.finditer(r'(?=(H{6}|T{6}))',s)
return len(list(matches))
def listVer(s):
n = 6
li = [s[i:i+n] for i in range(len(s)-n+1)]
count = 0
for i in li:
if i == 'H'*6 or i == 'T'*6:
count += 1
return count
print('regCount: {}'.format(regVer(longg)))
print('Time elapsed: {}'.format(timeit.timeit('regVer(longg)', number=100, globals=globals())))
print('listCount: {}'.format(listVer(longg)))
print('Time elapsed: {}'.format(timeit.timeit('listVer(longg)', number=100, globals=globals())))
</code></pre>
<p>它给出了以下输出:</p>
<pre><code>regCount: 356
Time elapsed: 0.070616307
listCount: 356
Time elapsed: 0.281572281
</code></pre>
<p>也许我只是不知道该怎么做</p>