【问题标题】:Index duplicate values索引重复值
【发布时间】:2017-10-15 16:07:07
【问题描述】:

我有一个列表,例如list = [1,5,6,8,1,9]

我想要最小值的索引,编码后会显示0,但问题是1出现了两次。谁能解释一下我的程序如何显示4 而不是0

为了更清楚地说明我是否有一个数字 k 并且我的 k 在我的列表中出现 x 次,我希望我的程序显示列表中最后一个 k 的索引(带有 @ 987654331@ 是列表中的最小值)。

这是我的代码:

z=int(input())
a=0
y=[]
for loop in range(z):
    a=int(input())
    y.append(a)
print(y.index(min(y))+1)

【问题讨论】:

  • 你能给我们看看代码吗?
  • 感谢您的回答,我会看的。问题是我是python编码的新手,所以我没有这个命令“dict”

标签: python python-3.x


【解决方案1】:
def get_last_index(seq):
    return (len(seq)-1) - seq[::-1].index(min(seq))

给定:

lst = [1,5,6,8,1,9]

...

>>> lst = [1,5,6,8,1,9]
>>> get_last_index(lst)
4

代码只是反转列表,检索item 的索引,并将其从列表的总长度中减去一以实现零索引。

【讨论】:

  • Ops,没有注意到你想要最小的值——让我重新调整我的代码来解决这个问题
【解决方案2】:

可能会有更好的答案

[i for i,j in enumerate(list) if j==min(list)]
[0, 4]

【讨论】:

  • 如果它出现了3次,或者第一次出现不是第一个元素怎么办?
【解决方案3】:

这将获得最小值的最后一个索引。

lst = [1,5,6,8,1,9]
[c for c,e in enumerate(lst) if e==min(lst)][-1]

【讨论】:

    猜你喜欢
    • 2015-09-08
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多