Python 返回列表的副本,其中每个值的一个实例被删除
我所拥有的只是删除重复的项目并对它们进行排序。我需要删除每个项目的一个实例,并返回一个包含项目的新列表。这就是我所拥有的:Python 返回列表的副本,其中每个值的一个实例被删除,python,list,Python,List,我所拥有的只是删除重复的项目并对它们进行排序。我需要删除每个项目的一个实例,并返回一个包含项目的新列表。这就是我所拥有的: def rem(nlst): n = [] for x in nlst: if x not in n: n.append(x) n.sort() return n 这就是它应该做的: >>> rem([4]) [] >>> rem([4,4]) [4
def rem(nlst):
n = []
for x in nlst:
if x not in n:
n.append(x)
n.sort()
return n
这就是它应该做的:
>>> rem([4])
[]
>>> rem([4,4])
[4]
>>> rem([4, 1, 3, 2])
[]
>>> rem([2, 4, 2, 4, 4])
[2, 4, 4]
一个简单的实现是使用集合。计数器:
def rem(iterable):
c = collections.Counter(iterable)
for k in c:
c[k] -= 1
return sorted(c.elements())
在2.7之前的Python版本中,collections.Counter
不可用。您可以使用集合来记录已看到的项目:
def rem(iterable):
result = []
seen = set()
for x in iterable:
if x in seen:
result.append(x)
else:
seen.add(x)
result.sort()
return result
一个简单的实现是使用集合。计数器:
def rem(iterable):
c = collections.Counter(iterable)
for k in c:
c[k] -= 1
return sorted(c.elements())
在2.7之前的Python版本中,collections.Counter
不可用。您可以使用集合来记录已看到的项目:
def rem(iterable):
result = []
seen = set()
for x in iterable:
if x in seen:
result.append(x)
else:
seen.add(x)
result.sort()
return result
对代码稍加修改似乎就可以了。仅添加了一个变量来跟踪当前值,并且仅在您已经看到该值时才添加一个新变量:
def rem(nlist):
n = []
nlist.sort()
cur = None
for x in nlist:
if x == cur:
n.append( x )
cur = x
return n
~对代码稍加修改似乎就可以了。仅添加了一个变量来跟踪当前值,并且仅在您已经看到该值时才添加一个新变量:
def rem(nlist):
n = []
nlist.sort()
cur = None
for x in nlist:
if x == cur:
n.append( x )
cur = x
return n
~谢谢你,斯文,你的回答正好满足了我的需要,你的回答也相当快!谢谢你,斯文,你的回答正好满足了我的需要,你的回答也相当快!