当前位置: 首页 > 面试题库 >

在Python列表中识别重复值

雍马鲁
2023-03-14
问题内容

是否可以使用python获取哪些值在列表中重复?

我有一个项目清单:

    mylist = [20, 30, 25, 20]

我知道删除重复项的最佳方法set(mylist),但是是否可以知道正在重复哪些值?如您所见,在此列表中,重复项是第一个和最后一个值。[0, 3]

是否有可能获得此结果或python中类似的东西?我正在努力避免做出荒谬的大if elif条件声明。


问题答案:

这些答案是O(n),因此比使用的代码多一点,mylist.count()mylist随着时间的延长,效率会大大提高

如果您只想知道重复项,请使用collections.Counter

from collections import Counter
mylist = [20, 30, 25, 20]
[k for k,v in Counter(mylist).items() if v>1]

如果您需要了解索引,

from collections import defaultdict
D = defaultdict(list)
for i,item in enumerate(mylist):
    D[item].append(i)
D = {k:v for k,v in D.items() if len(v)>1}


 类似资料:
  • 我需要从一个列表中追加一些重复的值到一个子列表中,让我用一个例子来解释: 我有一个名为的变量,它包含大写字母字符串和符号。 我的最终目标是拥有这个数组: 在示例中,我需要将所有的符号分组到原始中的子列表中,我想过在数组中迭代,找到当前附近的所有符号,然后创建第二个数组,但我想也许还有更多的pythonic我可以做的,有什么想法吗?

  • 问题内容: 如果想基于每个嵌套列表的第一个元素评估重复项,谁能提出一个好的解决方案从嵌套列表中删除重复项? 主列表如下所示: 如果已经在第一位置出现了另一个具有相同元素的列表,那么我想删除该列表并得到以下结果: 您可以建议一种算法来实现此目标吗? 问题答案: 您是否关心保留订单/删除了哪些重复项?如果不是,则: 会做的。如果您想保留订单并想保留第一个订单,则:

  • 下面的代码应该收集来自用户的数字输入,将其放入一个列表中,并对它们进行排序: 这段代码正在打印“无”,而不是打印我的排序列表。我少了哪一步?

  • 我试图在列表中的列表中插入一些东西,但是我不知道该怎么做。 例如,我有一个列表列表: 我想将插入子列表,索引为0,位于元素之后,所以它看起来像这样:

  • 问题内容: 这个问题已经在这里有了答案 : 为什么+ =在列表上表现异常? (8个答案) 6年前关闭。 在尝试与列表不同的列表时,我注意到 例如: 在上面的代码中打印出了原始值 但是如果我在下面切换为 现在等于 价值不同的原因是什么? 问题答案: 为变量分配一个新值,同时 扩展 存储在变量中的列表。而且,由于中的列表与中的列表相同,因此附加到也会追加到,而为变量分配新值不会以任何方式更改分配给该值

  • 考虑使用默认参数值的Python中的以下类方法定义: 然后,用户可以在没有参数的情况下调用它,就像 结果:参数值被默认值替换。 想象一下,在这种情况下,你想告诉用户这样的事情: 问题:有没有办法回溯以某种方式拦截以识别它(除了简单地将此初始化和验证逻辑移动到构造函数方法之外)?