我有一个输入列表,并且使用for循环搜索每个值以找到最高温度以及列表中的哪个位置。
我已经完整地编写了代码,除了我不知道要用我的循环正在查看的当前位置来更新best_position。
# set best_position to position
best_position =
这就是我在努力的地方。
# initialise the input with a non-empty list - Do NOT change the next line
temperatures = [4.7, 3, 4.8]
# set best_position to 0
best_position = 0
maxtemp = temperatures[0]
# for each position from 1 to length of list – 1:
for i in temperatures:
# if the item at position is better than the item at best_position:
if maxtemp<i:
maxtemp = i
# set best_position to position
best_position =
# print best_position
print(best_position, ": 00")
答案 0 :(得分:5)
使用enumerate
函数:
https://docs.python.org/3/library/functions.html#enumerate
# initialise the input with a non-empty list - Do NOT change the next line
temperatures = [4.7, 3, 4.8]
# set best_position to 0
best_position = 0
maxtemp = temperatures[0]
# for each position from 1 to length of list – 1:
for pos, t in enumerate(temperatures):
# if the item at position is better than the item at best_position:
if maxtemp<t:
maxtemp = t
# set best_position to position
best_position = pos
# print best_position
print(best_position, ": 00")
或者,您可以执行以下操作:
max_temp = max(temperatures)
best_pos = temperatures.index(max_temp)
print(best_pos, ": 00")
答案 1 :(得分:2)
如果要坚持使用for
循环,可以使用enumerate
,如@abdusco的答案所述。另外,您可以使用Python的功能并做一个不错的内置单线:
print(max(range(len(temperatures)), key=lambda i: temperatures[i]), ": 00")
,它将用作:
>>> temperatures = [4.7, 3, 4.8]
>>> print(max(range(len(temperatures)), key=lambda i: temperatures[i]), ": 00")
2 : 00
要分解它:
max
函数返回列表索引之间的最大值。