查找列表中第一个出现的特定数字的位置 [python]

0 投票
7 回答
6041 浏览
提问于 2025-04-16 10:27

我想在一个列表中找到一个出现超过一次的数字。我想知道第一个出现的位置。

举个例子:假设我想找数字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

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答