所以我想找到一个在列表中出现多次的数字。我想要第一个的位置。
示例:说我想要3
s = [1,2,3,4,5,3,9,8] => s[2] appears first
答案 0 :(得分:4)
def first_dup( seq ):
# keep track of the positions
seen = {}
for pos,item in enumerate(seq):
if item in seen:
# saw it before, so its a duplicate
return seen[item]
else:
# first time we see it, store the pos
seen[item] = pos
答案 1 :(得分:1)
有点含糊不清的问题。
如果您只想查找特定元素首次出现的索引,则应使用list.index()方法:
index = s.index(3)
但是如果你
想要找到一个出现的数字 列表中不止一次
一般情况下(没有给出元素值),似乎可以
答案 2 :(得分:1)
除非我误解了你的问题,否则这应该可以解决问题:
s = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 3]
for i in range(len(s)):
if s.count(s[i]) > 1:
return i
这应该为您提供在列表中多次出现的第一个元素的索引
如果这不是您所追求的,请发表评论,我将编辑代码。
答案 3 :(得分:0)
以下函数返回重复的第一次出现的索引
def find_first_duplicate(num_list):
track_list =[]
index = 0
for e in num_list:
if(e not in track_list):
track_list += [e]
else: ## found!
return index
index += 1
答案 4 :(得分:0)
这是另一种方式..
如果存在,它将返回第一个索引.. 如果没有可用的重复项,则会引发IndexError。
[s.index(_) for _ in s if s.count(_) > 1][0]
答案 5 :(得分:0)
另一种方法:
from operator import countOf
def multindex(seq):
""" find index of first value occurring more than once
in a sequence, else raise ValueError if there aren't any
"""
for i,v in enumerate(seq):
if countOf(seq, v) > 1:
return i
else:
raise ValueError
print 's[{}] is first value in the list occurring more than once'.format(multindex(s))
# s[2] is first value in the list occurring more than once
答案 6 :(得分:-1)
s.index(3)
会根据您的意愿返回2
。
index
将引发ValueError
。