查找列表中第一个出现的特定数字的位置 [python]
我想在一个列表中找到一个出现超过一次的数字。我想知道第一个出现的位置。
举个例子:假设我想找数字3。
s = [1,2,3,4,5,3,9,8] => s[2] appears first
7 个回答
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
这段代码会告诉你列表中第一个出现多次的元素的索引,也就是它第一次出现的位置。
如果这不是你想要的结果,请留言告诉我,我会修改代码。
2
这个问题有点模糊。
如果你只是想找到某个特定元素第一次出现的位置,可以使用 list.index() 方法:
index = s.index(3)
但是如果你
想找出在列表中出现超过一次的数字
一般来说(不考虑具体的元素值),你可以
- 要么进行简单的 O(N^2) 搜索(对列表中的每个元素进行检查,直到找到重复的元素)
- 要么先对列表进行排序,然后在排序后的列表中找到重复的元素,再用 list.index() 方法在原始数组中找到这个重复元素的位置——这样做的时间复杂度是 O(N*log(N)),因为排序的原因。
5
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
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。