Python 如何找出列表中的第一个重复编号?
我需要找出列表中第一个重复的数字(第二次出现的索引必须是最小的)。这是我的密码:Python 如何找出列表中的第一个重复编号?,python,duplicates,append,Python,Duplicates,Append,我需要找出列表中第一个重复的数字(第二次出现的索引必须是最小的)。这是我的密码: def firstDuplicate(a): b = [] for i in range(len(a)): for j in range(i+1, len(a)): if a[i] == a[j]: b.append(j) if len(b) == 0: r
def firstDuplicate(a):
b = []
for i in range(len(a)):
for j in range(i+1, len(a)):
if a[i] == a[j]:
b.append(j)
if len(b) == 0:
return -1
else:
return a[min(b)]
例如,如果我有a=[2,1,3,5,3,2],它应该返回3,但它返回2。
我用这个代码验证了:
a = [2, 1, 3, 5, 3, 2]
b = []
for i in range(len(a)):
for j in range(i+1, len(a)):
if a[i] == a[j]:
b.append(j)
print(b)
结果得到了正确的答案,即[5,4]。
所以我不知道这里出了什么问题。有人能帮忙吗?谢谢
以下是截图:
每次满足条件
a[i]==a[j]
时,您都返回并停止循环。循环完成后返回:
def firstDuplicate(a):
b = []
for i in range(len(a)):
for j in range(i+1, len(a)):
if a[i] == a[j]:
b.append(j)
if len(b) == 0:
return -1
else:
return a[min(b)]
print(firstDuplicate([2, 1, 3, 5, 3, 2]))
输出:
似乎您已经在for循环中写入了返回条件。所以它在第一次迭代时返回。试试这个
def firstDuplicate(a):
b = []
for i in range(len(a)):
for j in range(i+1, len(a)):
if a[i] == a[j]:
b.append(j)
if len(b) == 0:
return -1
else:
return a[min(b)]
我认为我们可以通过数组的一次迭代来识别重复项
def first_duplicate(arr):
d = dict()
n = len(arr)
for i, v in enumerate(arr):
if v in d:
d[v] = i
else:
d[v] = n
# print(d)
return min(d, key=d.get)
arr = [2, 1, 3, 5, 3, 2]
print(first_duplicate(arr))
您每次在第一次迭代时都返回,这与Appender无关,那么我应该怎么做?谢谢你,我明白了。非常感谢你!现在我明白了。谢谢您!
def first_duplicate(arr):
d = dict()
n = len(arr)
for i, v in enumerate(arr):
if v in d:
d[v] = i
else:
d[v] = n
# print(d)
return min(d, key=d.get)
arr = [2, 1, 3, 5, 3, 2]
print(first_duplicate(arr))