簡體   English   中英

function 內部的循環不能像外部循環那樣運行

[英]Loop inside the function can't run as well as an outside loop

我試圖通過循環查找列表中的所有重復項,如下所示

num = [1, 2, 2, 1]

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

它返回列表中的所有重復項,但是當我在 function 中傳遞它時,它只選擇第一個,如下所示

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

這個 function 刪除重復項但不能正常工作,因為我預期的意思是當列表看起來像這個print(RemoveDuplicate([1, 2, 3, 4, 4, 5, 6]))它工作得很好但是這個print(RemoveDuplicate([1, 2, 3, 4, 4, 4, 5, 6, 6, 6])) function粉碎

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

當有很多重復項時,此 function 無法將它們全部挑選出來,任何可以幫助我修復此錯誤的人

嘗試這個:)

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)

誰能幫我修復這個錯誤?

按照你的方式做,也許是這樣的:

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

你的不起作用的原因是,當程序到達 function 中的 return 語句時,它會立即跳出 function 。 因此,如果您想在單個 function 中返回多個值,請確保它們一次全部返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM