如何从输入整数中找出哪个任意数字出现两次? (蟒蛇)

时间:2019-02-27 06:02:51

标签: python

说我从输入中接收到一个任意数字列表,例如

[1,2,3,4,5,6,7,8,8,9,10]

我的代码在收到列表之前不知道这些数字是多少,我想返回自动出现两次的数字。我该怎么做?

谢谢。

5 个答案:

答案 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