嘿,大家好,我只是想知道我的代码有什么问题?



我试图创建一个函数,记录在一个列表中的值在一行中重复的次数。经过大约一个小时的考虑,我能够得出一个稳定的结论,但我无法得到预期的结果

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]

相关内容

  • 没有找到相关文章

最新更新