Найти и вернуть элементы, которые повторяются в списке ровно дважды - PullRequest
0 голосов
/ 20 октября 2019

Я хочу найти и вернуть элементы, которые повторяются в списке ровно дважды. Я написал этот код, но он также выводит числа, которые повторяются три раза.

Как распечатать числа, которые повторяются только дважды?

def printRepeating(arr,size) : 
count = [0] * size 
print(" Repeating elements are ",end = "") 
for i in range(0, size) : 
    if(count[arr[i]] == 1) : 
        print(arr[i], end = " ") 
    else : 
        count[arr[i]] = count[arr[i]] + 1

 arr = [2, 8, 4, 6, 1, 2, 8, 4, 7, 9, 4, 5] 
 arr_size = len(arr) 
 printRepeating(arr, arr_size) 

Ответы [ 4 ]

1 голос
/ 20 октября 2019

попробуйте это, это более кратко:

import collections

arr = [2, 8, 4, 6, 1, 2, 8, 4, 7, 9, 4, 5] 
repeats = [
    item 
    for item, count in collections.Counter(arr).items() 
    if count == 2
]
print(repeats)
0 голосов
/ 20 октября 2019

другое короткое решение:

arr = [2, 8, 4, 6, 1, 2, 8, 4, 7, 9, 4, 5] 
print(set([x for x in arr if arr.count(x) == 2])) # set is used to remove duplicates
# print(list(set([x for x in arr if arr.count(x) == 2]))) to print it as a list
0 голосов
/ 20 октября 2019

Если вы хотите просто удалить дубликаты, вы можете использовать

arr = [2, 8, 4, 6, 1, 2, 8, 4, 7, 9, 4, 5] 
set(arr)

, в противном случае используйте рекомендованный метод сбора

0 голосов
/ 20 октября 2019
arr = [2, 8, 4, 6, 1, 2, 8, 4, 7, 9, 4, 5] 
[x for x in set(arr) if arr.count(x) == 2]

Out[1]:
    [2, 8]
...