python-3.x - 如何使用 Python 3 列出所有与 Regex 对象匹配的模式?
问题描述
我刚开始编码,遇到了一个问题:当硬币翻转给定次数时,我必须找到条纹的数量(连续三次或更多次接收正面或反面)。这是我到目前为止得到的:
import random, re
lst=[]
def coin_flip(b):
for i in range(b):
a=random.randint(0,1)
if a==0:
lst.append("H")
else:
lst.append("T")
def check_for_streak(l):
string="".join(l)
Head=[]
Tail=[]
Head=re.compile(r'(H){3,}').findall(string)
Tail=re.compile(r'(T){3,}').findall(string)
return "The number of streaks is "+str(len(Head)+len(tail))
所以这里的问题是我希望列表 Head 和 Tail 包含 H 或 T 的条纹,而不是条纹本身中的“H”和“T”( Head=["HHHHH","HHHH",... ] 而不是 Head=["H","H",...]) 但似乎并非如此。有没有办法解决这个问题?
解决方案
对于您的正则表达式,使用(H{3,})
而不是(H){3,}
:
import random, re
def coin_flip(b):
lst=[]
for i in range(b):
if random.randint(0,1):
lst.append("H")
else:
lst.append("T")
return lst
def check_for_streak(l):
string="".join(l)
head = re.compile(r'(H{3,})').findall(string)
tail = re.compile(r'(T{3,})').findall(string)
print(string)
print(head)
print(tail)
return "The number of streaks is "+str(len(head)+len(tail))
lst = coin_flip(100)
print( check_for_streak(lst) )
打印(例如):
THTTTTHHHTHHHHHHHTHTTTTHHHTHTHTTHTHTTTTTTHHTTTTHTTHTHTTTHTHTTHHHTHTHHHTHHHTTTTHHTTHTHHHTTTHHTTTHHHHT
['HHH', 'HHHHHHH', 'HHH', 'HHH', 'HHH', 'HHH', 'HHH', 'HHHH']
['TTTT', 'TTTT', 'TTTTTT', 'TTTT', 'TTT', 'TTTT', 'TTT', 'TTT']
The number of streaks is 16
推荐阅读
- node.js - 更新 Dynamo DB 中对象的键值
- amazon-web-services - Traefik 背后的服务的 AWS ALB 运行状况检查失败
- java - Java如何在DEV环境中访问图像作为资源
- java - 防止客户端 aws 客户端凭证和 CMK 暴露
- c++ - 如何计算构造函数?
- yii2 - 如何在 Linux 中构建我的 Yii2 Codeception 测试
- java - 将应用程序移动到 javafx 中的第二个窗口监视器
- java - 从终端编译这个 lanterna maven 项目需要什么?
- autodesk-forge - Forge Veiwer 闪烁纹理
- oracle - Oracle Identity Manager 设计控制台,如何为适配器任务创建 IF 语句