通过比较 i 和 i+1 在排序列表中查找重复项
find duplicates in a sorted list by comparing i with i+1
我有一个按升序排列的列表。我想通过比较元素 i 和元素 i+1 来查找列表中的重复项。我已经尝试了其他 worked.For 示例双循环的方法,但我想使用这种方法,因为我正在学习 python 并且想了解为什么我的代码不起作用。
这是我的代码:
array=[1,1,2,3,3,4,5,6]
def find_duplicates(arr):
duplicates=[]
sorted= sort(arr) #helper function that succesfully sorts a list
for i in range(1, len(sorted)):
#before=sorted[i-1]
if i==sorted[i-1]:
duplicates.append(i) #tried also duplicates.append(sorted[i-1])
return duplicates #expected: [1,3]
print(find_duplicates(array)) #actual outcome [1]
我只是将第一个副本附加到我的数组中。
您的建议将不胜感激。
谢谢。
您正在比较 i
和 sorted[i-1]
,而不是比较 sorted[i]
.
的列表元素
此外,sorted
是 python 中的关键字,因为有一个函数同名 - sorted()
所以最好使用另一个变量。
有几次修复机会。首先,我们不要使用 sorted
作为变量名 :-) 接下来,让我们理清混乱的索引到 arr
和 arr
在该索引处的值。
def find_duplicates(arr):
## ---------------------
## feel free to call some other sorting function, but let's not set the return
## value to a variable called "sorted" as it clobers this built-in function
## ---------------------
arr = sorted(arr)
## ---------------------
duplicates=[]
for i in range(1, len(arr)):
## ---------------------
## Not stricktly needed, but let's define some variables for clarity
## ---------------------
current_value = arr[i]
prior_value = arr[i - 1]
## ---------------------
if current_value == prior_value:
duplicates.append(prior_value)
return duplicates
array=[1,1,2,3,3,4,5,6]
print(find_duplicates(array))
这应该给我们:
[1, 3]
我有一个按升序排列的列表。我想通过比较元素 i 和元素 i+1 来查找列表中的重复项。我已经尝试了其他 worked.For 示例双循环的方法,但我想使用这种方法,因为我正在学习 python 并且想了解为什么我的代码不起作用。 这是我的代码:
array=[1,1,2,3,3,4,5,6]
def find_duplicates(arr):
duplicates=[]
sorted= sort(arr) #helper function that succesfully sorts a list
for i in range(1, len(sorted)):
#before=sorted[i-1]
if i==sorted[i-1]:
duplicates.append(i) #tried also duplicates.append(sorted[i-1])
return duplicates #expected: [1,3]
print(find_duplicates(array)) #actual outcome [1]
我只是将第一个副本附加到我的数组中。 您的建议将不胜感激。 谢谢。
您正在比较 i
和 sorted[i-1]
,而不是比较 sorted[i]
.
此外,sorted
是 python 中的关键字,因为有一个函数同名 - sorted()
所以最好使用另一个变量。
有几次修复机会。首先,我们不要使用 sorted
作为变量名 :-) 接下来,让我们理清混乱的索引到 arr
和 arr
在该索引处的值。
def find_duplicates(arr):
## ---------------------
## feel free to call some other sorting function, but let's not set the return
## value to a variable called "sorted" as it clobers this built-in function
## ---------------------
arr = sorted(arr)
## ---------------------
duplicates=[]
for i in range(1, len(arr)):
## ---------------------
## Not stricktly needed, but let's define some variables for clarity
## ---------------------
current_value = arr[i]
prior_value = arr[i - 1]
## ---------------------
if current_value == prior_value:
duplicates.append(prior_value)
return duplicates
array=[1,1,2,3,3,4,5,6]
print(find_duplicates(array))
这应该给我们:
[1, 3]