从列表的 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 开始。
我创建了一个程序来获取列表的最大值及其出现的位置(列表从索引 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 开始。