python - 返回频率元组的列表,我在哪里做错了?
问题描述
我必须做一个练习,要求我做一个函数来查找列表中连续值的频率并返回一个元组列表,我必须在其中显示重复的次数。
输入:
[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 或类似的东西。我需要帮助,有什么建议吗?
解决方案
使用第二个 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
推荐阅读
- php - 根据存储在另一个数组中的键获取数组中的元素
- angular - ngx-extended-pdf-viewer 是否可以只呈现一页?
- android - 如何知道我的手机使用的互联网连接类型
- nlp - 如何在 spaCy 中获取 POS、Tag 和 Dep 的完整列表?
- javascript - onChange 事件没有正确地将参数传递给我的函数
- mysql - 试图选择最大列学年
- python - 如何让一个大字符串(又名 str 图片)一个接一个打印?
- python - 在分配“默认”值时检查是否存在非顺序列表索引
- ruby-on-rails - Fresh Rails 6.0.0 在执行“捆绑安装”后中断
- java - java将json发送到php并插入mysql,但返回null