我试图创建一个函数,记录在一个列表中的值在一行中重复的次数。经过大约一个小时的考虑,我能够得出一个稳定的结论,但我无法得到预期的结果
lst = [1,2,2,2,3,1,1]
def compress(numlist):
intervals,x=0,0
for i in numlist:
if i == numlist[x]:
intervals+=1
elif i != numlist[x]:
print((intervals,numlist[x]), end=" ")
x+=intervals
intervals=1
compress(lst)
在这里,我试图让函数"压缩";整数列表当我运行代码时,结果是:
(1, 1) (3, 2) (1, 3)
而期望的结果是:
(1, 1) (3, 2) (1, 3) (2,1)
只在发现一个值不等于前一个值时才显示一次运行。当然,最后一个值之后没有任何值,因此不会打印最后一次运行的结果。只需在循环后添加一行来打印最后一次运行。
if intervals != 0:
print((intervals,numlist[x]))
顺便说一下,您不需要elif
条件。所有你需要的是一个else
,因为如果i == numlist[x]
,那么唯一可能的是i != numlist[x]
。