编写一个方法rem()
,该方法将包含可能重复值的列表作为输入
并返回列表的副本,其中删除了每个重复值的一个副本。
> rem([4])
[]
> rem([4, 4])
[4]
> rem([4, 1, 3, 2])
[]
> rem([2, 4, 2, 4, 4])
[2, 4, 4]
我该怎么做呢?我是否制作了包含重复项的新列表?
答案 0 :(得分:1)
collections.Counter
是一个好主意,试试这个:
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]
答案 1 :(得分:0)
def rem(a):
copy = a[:]
for value in set(copy):
copy.remove(value)
return copy
答案 2 :(得分:-1)
您可以使用collections.Counter:
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]
答案 3 :(得分:-1)
l = [1,2,2,3,4]
for item in set(l):
l.remove(item)