为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的代码不检查列表中的每个值?

为什么我的代码不检查列表中的每个值?

摇曳的蔷薇 2023-09-12 17:21:59
我试图检查某个值连续重复多少次,但遇到了一个问题,我的代码在没有检查的情况下留下了最后一个数字。Ai = input()arr = [int(x) for x in Ai.split()]c = 0frozen_num = arr[0]for i in range(0,len(arr)):    print(arr)    if frozen_num == arr[0]:        arr.remove(arr[0])        c+=1    else:        frozen_num = arr[0]                    print(c)假设我输入: 1 1 1 1 5 5 我的代码将给出输出 5 而不是 6我希望你明白我在说什么。我对 python 还很陌生,而且这段代码还没有完成,稍后的数字将被附加,所以我得到输出:[4, 2],因为“1”重复 4 次,“5”重复 2 次。编辑 - 我不小心写了 6 和 7,而不是 5 和 6。
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

您可以使用该Counter模块Collections的 来测量不同数字的所有出现次数。


from collections import Counter

arr = list(Counter(input().split()).values())

print(arr)

输入为的输出1 1 1 1 5 5:


1 1 1 1 5 5

[4, 2]


查看完整回答
反对 回复 2023-09-12
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

如果您想坚持使用您的方法而不使用外部库,您可以添加一个 if 语句来检测何时到达数组的最后一个元素,并以与其他元素不同的方式处理它:


Ai=input()

arr = [int(x) for x in Ai.split()]

L=[]

c = 0

frozen_num = arr[0]

for i in range(0, len(arr)+1):

    print(arr)

    if len(arr)==1: #If we reached the end of the array

        if frozen_num == arr[0]: #if the last element of arr is the same as the previous one

            c+=1

            L.append(c)

        else: #if the last element is different, just append 1 to the end of the list

            L.append(c)

            L.append(1) 

    elif frozen_num == arr[0]:

        arr.remove(arr[0])

        c += 1

    else:

        L.append(c)

        c=0

        frozen_num = arr[0]

print(L)

输入


[5,5,5,6,6,1]

输出


[3,2,1]


查看完整回答
反对 回复 2023-09-12
  • 2 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信