如何让我的代码返回最小数字的索引而不是最小数字?这是我写:最小数字而不是最小数字的返回索引
def index_smallest(first):
minimum = first[0]
for x in first:
if x < minimum:
minimum = x
return minimum
如何让我的代码返回最小数字的索引而不是最小数字?这是我写:最小数字而不是最小数字的返回索引
def index_smallest(first):
minimum = first[0]
for x in first:
if x < minimum:
minimum = x
return minimum
变化return minimum
到return first.index(minimum)
。
或者使用
def index_smallest(first):
return first.index(min(first))
演示:
>>> first = [1, 0, -1, 3]
>>> first.index(min(first))
2
对于这个刚刚遍历可用的指标,而不是在列表中的项目。您可以通过根据列表的长度制作range()
可迭代对象来实现此目的。然后你改变X的所有occurrances是第一[X]代替或每次抢项目,像这样:
def index_smallest(first):
minimum = first[0]
min_index = 0
for i in range(len(first)):
x = first[i]
if x < minimum:
minimum = x
min_index = i
return min_index
有这样做更有效的方式,但你的工作方式不够好。
可能有多次出现的最小数字。在这种情况下,这将返回第一次出现。
def index_smallest(numList):
return numList.index(min(numList))
该方法使用emuerate()
来提供每个项目的索引。它只需要一遍整个序列。它返回最小值的第一个项目的索引,如果序列为空,则返回None
。
from operator import itemgetter
def index_smallest(seq):
value = itemgetter(1)
try:
return min(enumerate(seq), key=value)[0]
except ValueError as exc:
return None
>>> index_smallest('') is None
True
>>> index_smallest([10, 20, 1, -10, 32])
3
>>> index_smallest((i for i in [10, 20, 1, -10, 32])) # generator expression
3
>>> index_smallest('qwerty')
2
>>> index_smallest(iter('qwerty'))
2
这也适用于不支持下标的序列,例如,发电机。一个物品在废发电机中的位置是否有任何用处是值得商榷的,但我想可能有一些用于有限发电机的用例。这段代码将处理所有可迭代的数据,并且如果将一个空序列传递给它,它将不会炸毁。
你可以先做的是拿数字列表并找到最大的成员。 然后,您可以使用.index()方法获取相应的索引。 例如:
my_numbers = [1,2,3,4,5,6]
greatest_number = max(my_numbers)
greatest_number_index = my_numbers.index(greatest_number)
print(greatest_number_index, greatest_number)
警告:对于超大型长的列表,或者如果你要处理数以百万计的列表中,其中只需要遍历列表一次,而不是两次(在最坏的情况下)的解决方案优越。 – timgeb