L oop внутри функции не может работать так же хорошо, как и внешний цикл - PullRequest
0 голосов
/ 20 июня 2020

Я попытался найти все дубликаты в списке с помощью l oop, например, следующего

num = [1, 2, 2, 1]

for i in range(1, len(num)):
if num[i] == num[i - 1]:
    print(num[i])

, и он вернул все дубликаты внутри списка, но когда я передал это внутри функции, он только выберите первое, например, следующее

def FindDuplicates(nums):
nums.sort()
for i in range(1, len(nums)):
    if nums[i] == nums[i - 1]:
        return nums[i]

, и эта функция удалит дубликаты, но не может работать так, как я ожидал, означает, что когда список выглядит так print(RemoveDuplicate([1, 2, 3, 4, 4, 5, 6])), он работает хорошо, но это print(RemoveDuplicate([1, 2, 3, 4, 4, 4, 5, 6, 6, 6])) функция cru sh

def RemoveDuplicate(array):
no_double = []
its_index = 0
founded = 0
for arr in array:
    if array.count(arr) > 1:
        founded = arr
        its_index = array.index(arr)
    elif array.count(arr) <= 1:
        no_double.append(arr)
no_double.insert(its_index, founded)
return no_double

при большом количестве дубликатов эта функция не может выбрать их все, кто может помочь мне исправить эту ошибку

Ответы [ 2 ]

1 голос
/ 20 июня 2020

Может ли кто-нибудь помочь мне исправить эту ошибку?

Делая это по-своему, может быть так:

def FindDuplicates(nums):
    d = []
    nums.sort()
    for i in range(1, len(nums)):
        if nums[i] == nums[i - 1]:
            d.append(nums[i])
    return d

Причина, по которой ваш не работает, в том, что когда программа достигает оператора возврата в функции, она тут же выпрыгивает из функции. Поэтому, если вы хотите вернуть несколько значений в одной функции, убедитесь, что они возвращаются все сразу.

1 голос
/ 20 июня 2020

Попробуйте :)

from collections import Counter


lst = [4,3,2,4,5,6,4,7,6,8]
d =  Counter(lst)  # -> Counter({4: 3, 6: 2, 3: 1, 2: 1, 5: 1, 7: 1, 8: 1})
res = [k for k, v in d.items() if v > 1]
print(res)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...