说我从输入中接收到一个任意数字列表,例如
[1,2,3,4,5,6,7,8,8,9,10]
我的代码在收到列表之前不知道这些数字是多少,我想返回自动出现两次的数字。我该怎么做?
谢谢。
答案 0 :(得分:1)
您可以在python 2和3中使用Counter By defualt方法
from collections import Counter
lst=[1,2,3,4,5,6,7,8,8,9,10]
items=[k for k,v in Counter(lst).items() if v==2]
print(items)
答案 1 :(得分:1)
您可以这样做:
input = [1,2,3,4,5,6,7,8,8,9,10]
list_of_duplicates = []
for i in input:
if i not in list_of_duplicates:
list_of_duplicates.append(i)
input.pop(i)
print(input)
现在输入将具有列表中多次出现的所有数字。
答案 2 :(得分:0)
希望这会有所帮助。
input = [1,2,3,4,5,6,7,8,8,9,10]
unique = set(input)
twice = []
for item in unique:
if input.count(item) == 2:
twice.append(item)
答案 3 :(得分:0)
我创造了一种可以在一行中完成的可怕的事情,因为我的大脑喜欢思考我猜是该睡觉的时间了吗?
这将返回给定整数列表的所有重复值的列表。
dupes = list(set(map(lambda x: x if inputList.count(x) >= 2 else None, inputList))-set([None]))
它如何工作? map()函数对列表的每个值应用一个函数,在您的情况下,我们的可能具有重复项的输入列表称为“ inputList”。然后,它应用一个lambda函数,如果通过.count()方法应用于inputList的迭代值大于或等于2,则返回被迭代整数的值,如果它不算作重复的话它将返回无。通过由map函数应用此lambda函数,我们得到了一个列表列表,其中包含一堆None和通过lambda函数检测为重复项的实际整数。鉴于这是一个列表,我们使用set来对其进行重复数据删除。然后,我们将重复项集与由一个项为None的列表组成的静态集相减,从映射返回列表的集合中删除None值。最后,我们将集合减去后再将其转换为名为“ dupes”的列表,以方便使用。
示例用法...
inputList = [1, 2, 3, 4, 4, 4, 5, 6, 6, 7, 1001, 1002, 1002, 99999, 100000, 1000001, 1000001]
dupes = list(set(map(lambda x: x if inputList.count(x) >= 2 else None, inputList))-set([None]))
print(dupes)
[1000001, 1002, 4, 6]
我会让其他人详细说明潜在的范围问题.....或其他问题...
答案 4 :(得分:0)
这将创建重复编号的列表。
x = [1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10]
s = {}
duplicates = []
for n in x:
try:
if s[n]:
duplicates.append(n)
s[n] = False
except KeyError:
s[n] = True
print(duplicates)
假设列表不包含0