我正在尝试(为学校)编写一个代码,压缩并计数相同的相邻字符的数量。在这个例子中,它将是4(1)4(0)2(1)2(0)。它应该输出:4 4 2 2,但出于某种原因,它省略了最后2个。
有人知道如何解决这个问题或使我的代码更加优化吗?
我的代码:
val = "111100001100" #the value
count1 = 0 #counts how many repeated values there are
count0 = 0
num = 0
char = val[num]
char_count = 0
length = len(val)
l1 = length - 1
for char in range(l1):
if val[char + 1] == val[char]:
count1 += 1
char_count + 1
elif val[char + 1] != val[char]:
x = str(count1 + 1)
print(x)
count1 = 0
char_count + 1*
输出:4 4 2
1条答案
按热度按时间kqqjbcuj1#
你可以使用
itertools.groupby
。要了解它的工作原理,以下是它对
val
的影响:为了获得您想要的输出,我们只需要获得每个组的列表长度。
如果你想让它按你的方式来做,我做了一些小改动,让它工作。您可以添加一个额外的条件来检查它是否是列表中的最后一个元素,然后打印
count1
的当前值。