首页 > 解决方案 > 返回频率元组的列表,我在哪里做错了?

问题描述

我必须做一个练习,要求我做一个函数来查找列表中连续值的频率并返回一个元组列表,我必须在其中显示重复的次数。

输入:

[1, 1, 1, 3, 5, 1, 1, 3, 3]

输出:

[(1,3) , (3,1) , (5,1) , (1,2) , (3,2)]

代码:

def empaquetar(l):

lista = []
for i in range(len(l)-1):
    cont = 0
    j = i + 1
    while l[i] == l[j] and j<len(l)-1:
        cont += 1
        i += 1
        j += 1
    if cont > 0:
        lista.append((l[i], cont + 1))
    else:
        lista.append((l[i],1))
return lista

好吧,我写的东西并没有完全返回我想要的东西,我找不到解决方案,但我搜索了很多,例如来自集合的工具 Counter 或类似的东西。我需要帮助,有什么建议吗?

标签: pythonlistalgorithmtuples

解决方案


使用第二个 for 循环来检查该数字连续出现的次数。

def empaquetar(l):

lista = []
for i in l:
    cont = 1
    for j in range(i+1, len(l)):
      If l[j]==i:
        cont += 1
      else:
        break
  lista.append((i, cont))

return lista

推荐阅读