Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中返回包含每个重复值的列表?_Python_List_Duplicates - Fatal编程技术网

在Python中返回包含每个重复值的列表?

在Python中返回包含每个重复值的列表?,python,list,duplicates,Python,List,Duplicates,编写一个方法rem,该方法接受一个可能包含重复值的列表作为输入 并返回列表的副本,其中删除了每个重复值的一个副本 > rem([4]) [] > rem([4, 4]) [4] > rem([4, 1, 3, 2]) [] > rem([2, 4, 2, 4, 4]) [2, 4, 4] 我该怎么做呢?我是否要创建一个包含重复项的新列表 您可以使用以下方法: import collections def rem(a): new_list = [] fo

编写一个方法rem,该方法接受一个可能包含重复值的列表作为输入 并返回列表的副本,其中删除了每个重复值的一个副本

> rem([4])
[]

> rem([4, 4])
[4]

> rem([4, 1, 3, 2])
[]

> rem([2, 4, 2, 4, 4])
[2, 4, 4]
我该怎么做呢?我是否要创建一个包含重复项的新列表

您可以使用以下方法:

import collections
def rem(a):
   new_list = []
   for key, count in collections.Counter(a).iteritems():
      if count > 1:
         new_list.extend([key] * (count-1))
   return new_list
举个例子:

>>> rem([4])
[]
>>> rem([4, 4]) 
[4]
>>> rem([4, 1, 3, 2])
[]
>>> rem([2, 4, 2, 4, 4])
[2, 4, 4]
好主意,试试这个:

import collections
def rem(l):
    newlist = []
    for k, v in collections.Counter(l).iteritems():
        newlist += [k] * (v - 1)
    return newlist

你甚至没有费心去重写这个问题……看起来你甚至没有试图自己找到解决方案。标题“返回重复值列表”中的问题与正文中的问题不同,删除每个重复值中的一个,并且你在示例中显示的行为删除每个值中的一个,无论它是否重复,都不匹配这两个。你需要更清楚地了解你想要实现什么,才能从中获得任何东西。顺便说一句,事实上,7个人都兴高采烈地猜测你的三个问题中哪一个是真正的意思,并给出了答案,这让我很开心。这显然是一个家庭作业问题,提问者显然是编程新手,没有信心想出自己的方法。为什么要提供使用Python特定工具和构造的解决方案,如集合模块或列表乘法?在我看来,这可能不是OP学习的最佳方式。对于这一点,有更多的语言不可知的方法,它们不那么吓人,而且对编程新手来说更有用。@MarkAmery如果OP不想要有形的、实用的和功能完整的代码,那么StackOverflow不是一个合适的地方。在家庭作业标签出现的日子里,你的评论会更有效,但是这个标签已经被弃用了。老师交上来的时候会笑得很厉害。我真的不明白这里的否决票。我已经检查了这段代码,它允许OP做他们想做的事情。OP有效地提出了三个独立的问题,一个在标题中,一个在正文中,一个在示例中,有不同的要求,正如我在对问题的评论中所指出的。很可能你和你的选民对这个问题的解释不同。
l = [1,2,2,3,4]
for item in set(l):
    l.remove(item)
import collections
def rem(l):
    newlist = []
    for k, v in collections.Counter(l).iteritems():
        newlist += [k] * (v - 1)
    return newlist
print rem([4])
print rem([4, 4])
print rem([4, 1, 3, 2])
print rem([2, 4, 2, 4, 4])
[] [4] [] [2, 4, 4]