如果我有一个表格,其中每个月每天都有一个列,列数为1和0,是否可以计算我有1个分组的数量?
我的意思是,如果我有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
,该月是否有办法说我有4+2+1+3+4+2+1
系列以下1s
如果是的话,有没有办法使它更复杂一些,并通过将1和0分组为4个,然后是2个零,再加上2个,以此类推呢?
我有道理吗?
答案 0 :(得分:0)
遍历数组,同时跟踪previous_character和counter。如果当前字符等于前一个字符,则增加计数器,否则将previous_character设置为当前字符,并将计数器重置为1。 每次发生此重置操作时,您都可以打印或将多个连接的字符保存在数组中。
答案 1 :(得分:0)
这应该可以帮助您:
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
答案 2 :(得分:0)
current_character = array[0]
counter = 1
for i in range(1, len(array)):
if (array[i] == current_character):
counter += 1
else:
print(current_character + " " + str(counter))
current_character = array[i]
counter = 1
答案 3 :(得分:0)
我理解您的问题的方式是您想要
您可以使用groupby
模块中的函数itertools
进行拆分:
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)]