[英]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.