对于用户的活动时间段,我有一个二进制序列。当他今天不活动时,该值为“ 0”,而当他不活动时,该值为“ 1”。我想证明他是否每周至少活动两次,因此序列的每7个位置必须至少有两个。谁能帮我实现这个想法?
答案 0 :(得分:1)
它也适用于字符串或列表:
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
答案 1 :(得分:0)
在您的情况下,您可以将这些值相加并检查sum是否大于或等于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))