【问题标题】:Function that returns elements of a list repeated N times返回重复N次列表元素的函数
【发布时间】:2017-11-29 16:33:04
【问题描述】:

我需要编写一个函数rep(lst, k),其中lst 是整数列表,k 是它们出现的次数。例如,如果我有一个列表:

lst = [1,2,1,5,3,4,2,1,3,5,6]

并启动命令rep(lst,2),它需要返回一个不重复的列表,其中包含重复k次的数字,例如:

rep(lst, 2)
# returns  [1,2,5,3]

我该怎么做?我可以编写一个函数来计算特定变量的出现次数,但我不能这样做,计算只会返回列表中元素的数量。

【问题讨论】:

  • 格式化您的问题以使其看起来很有趣并添加您的尝试使其帮助吸引
  • 为什么返回 1,因为它在 lst 中出现了 3 次
  • [k for k,v in Counter(lst).items() if v == 2] ?

标签: python python-3.x ipython


【解决方案1】:

如何使用sets 完成任务:

lst = [1,2,1,5,3,4,2,1,3,5,6]

def rep(the_list, rep):
  return [x for x in set(the_list) if the_list.count(x) == rep]

print(rep(lst, 2))  # -> [2, 3, 5]
  1. set(the_list) 列表被转换为 set 以确保每个 unique 元素只被搜索一次。

【讨论】:

  • 谢谢,这正是我想要的!我以为set模块只是为了去除重复出现的,不知道它也可以用来计数。
  • 我正在使用它来消除重复出现。
【解决方案2】:

这是使用计数器的替代解决方案

from collections import Counter

def count(list, k):
    tmp = Counter(list)
    return [x for x in tmp if tmp[x] == k]

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 2021-06-05
    • 2018-11-05
    • 2014-12-20
    • 1970-01-01
    相关资源
    最近更新 更多