Python 用户活动的二进制序列

Python 用户活动的二进制序列,python,binary,Python,Binary,我有一个用户活动周期的二进制序列。当他在这一天不活动时有一个“0”,当他在这一天不活动时有一个“1”。我想证明他是否每周活动不少于两次,所以序列中每7个位置必须至少有两个。有人能帮我实现这个想法吗?在你的例子中,你可以把这些值相加,然后检查总和是否大于或等于2 以下是代码: activity_list = [0, 0, 1, 1, 0, 0, 0] def is_active(activity_list: list, minimum_active_days: int): return

我有一个用户活动周期的二进制序列。当他在这一天不活动时有一个“0”,当他在这一天不活动时有一个“1”。我想证明他是否每周活动不少于两次,所以序列中每7个位置必须至少有两个。有人能帮我实现这个想法吗?

在你的例子中,你可以把这些值相加,然后检查总和是否大于或等于2

以下是代码:

activity_list = [0, 0, 1, 1, 0, 0, 0]

def is_active(activity_list: list, minimum_active_days: int):
    return sum(activity_list) >= minimum_active_days

print(is_active(activity_list, 2))
>>> True
答复评论:


如果列表比7长得多,我想知道怎么办 如果每7个条目的总和大于或等于2

然后,您应该对列表进行切片,以获取要检查的值

# some_long_list - stores more than 7 values
for i in range(len(some_long_list) -7):
    print(f"Is active in period: from {i}, to {i+7}")
    print(is_active(some_long_list[i:i+7], 2))

它也适用于字符串或列表:

days="110000000000110011"
#days=['1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '1', '1']

for d in range(0,len(days),7): 
    print(d//7,days[d:d+7].count("1"))

#In the output, the first number is the week number:
0 2
1 2
2 2

如果列表比7长很多,我想知道每7个条目的总和是大于还是等于2,我该怎么办?