Python 统计一段时间内发生的事件
如果我有一个表,在一个月内每天有一列,序列为1和0,有没有可能计算我有多少个1的分组 我的意思是,如果我有Python 统计一段时间内发生的事件,python,Python,如果我有一个表,在一个月内每天有一列,序列为1和0,有没有可能计算我有多少个1的分组 我的意思是,如果我有11101010101001001001101,有没有办法说在那个月我有4+2+1+3+4+2+1系列的以下1 如果是这样的话,有没有办法让它更复杂一点,通过将1和0分组,如4个1,2个0,2个1等等 我说得通吗?在跟踪前一个字符和计数器的同时迭代数组。如果当前字符等于上一个字符,则增加计数器,否则将上一个字符设置为当前字符,并将计数器重置为1。 每次重置时,您都可以打印或在数组中保存大量连
11101010101001001001101
,有没有办法说在那个月我有4+2+1+3+4+2+1
系列的以下1
如果是这样的话,有没有办法让它更复杂一点,通过将1和0分组,如4个1,2个0,2个1等等
我说得通吗?在跟踪前一个字符和计数器的同时迭代数组。如果当前字符等于上一个字符,则增加计数器,否则将上一个字符设置为当前字符,并将计数器重置为1。 每次重置时,您都可以打印或在数组中保存大量连接的字符。这将有助于您:
string = '1 1 1 1 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1'
num_lst = [int(element) for element in string.split(' ')]
occurrences = 0
prev = 0
occurrences_lst = []
for num in num_lst:
if num == 1:
occurrences += 1
else:
if occurrences != 0:
occurrences_lst.append(str(occurrences))
occurrences = 0
if occurrences == 1:
occurrences_lst.append(str(occurrences))
print(' + '.join(occurrences_lst))
产出:
4 + 2 + 1 + 3 + 4 + 2 + 1
我对你问题的理解是,你想:
itertools
模块中的函数groupby
进行拆分:
from itertools import groupby
data = [1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1]
output = []
for value, subsequence in groupby(data):
length = sum(1 for _ in subsequence)
output.append((value, length))
print(output)
# [(1, 4), (0, 2), (1, 2), (0, 1), (1, 1), (0, 1), (1, 3), (0, 7), (1, 4), (0, 1), (1, 2), (0, 2), (1, 1)]
所以这有点像使用循环代码,不是吗?你有没有想过在代码中会是什么样子?如果不是的话,我可以试着自己煮豆子,但如果你已经有了一个大概的想法,那绝对是棒极了<代码>字符上一个字符=数组[0];int计数器=1;对于(int i=1;i
i
——您可以直接在列表值上迭代,如:for char In array[1://code>。
from itertools import groupby
data = [1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1]
output = []
for value, subsequence in groupby(data):
length = sum(1 for _ in subsequence)
output.append((value, length))
print(output)
# [(1, 4), (0, 2), (1, 2), (0, 1), (1, 1), (0, 1), (1, 3), (0, 7), (1, 4), (0, 1), (1, 2), (0, 2), (1, 1)]