从列表的 1 而不是 0 开始计算索引

Start counting indexes from 1 instead of 0 of a list

我创建了一个程序来获取列表的最大值及其出现的位置(列表从索引 1 而不是 0 开始),但我找不到任何有用的解决方案。 输入总是一串数字除以零。

这是我的代码:

inp = list(map(int,input().split()))
m = max(inp)
count = inp.count(m)
print(m)
def maxelements(seq): # @SilentGhost
    return [i for i, j in enumerate(seq) if j == m]
print(maxelements(inp))

我希望输出最大值,然后输出它出现的所有位置。 (也可以像下面的例子那样不用括号吗?)

输入:4 56 43 45 2 56 8

输出:56

2 6

如果你想移动索引值,你可以这样做

return [i + 1 for i, j in enumerate(seq) if j == m]

更一般地,i 或 j 的任何变换!

def f(i, j):
    # do whatever you want, and return something
    return i + 1

return [f(i, j) for i, j in enumerate(seq) if j == m]

没有括号,作为字符串:

return " ".join(str(i + 1) for i, j in enumerate(seq) if j==m) 

enumerate() 指定 start=1:

>>> l = [4, 56, 43, 45, 2, 56, 8]
>>> max_num = max(l)
>>> [i for i, e in enumerate(l, start=1) if e == max_num]
[2, 6]

默认情况下 enumerate() 使用 start=0,因为索引从 0 开始。