你如何用 for 语句解释循环?



我在下面有代码,基本上是每天的温度列表,例如 T = [30,50,99,44,55,33,99] 并返回一个相同长度的列表,每个输入指示必须等待多少天才能出现温暖的一天。因此,对于此示例,输出将为 [1,1,0,1,2,1,0]。如果前面没有更温暖的一天,我们只需插入 0。

约束:温度长度将在 [1, 30000] 范围内。每个温度将是 [30, 100] 范围内的整数

def dailyTemperatures(self, T):
nxt = [float('inf')] * 102
ans = [0] * len(T)
for i in xrange(len(T) - 1, -1, -1):
#Use 102 so min(nxt[t]) has a default value
warmer_index = min(nxt[t] for t in xrange(T[i]+1, 102))
if warmer_index < float('inf'):
ans[i] = warmer_index - i
nxt[T[i]] = i
return ans

我的问题是针对行"warmer_index = min(nxt[t] for t in xrange(T[i]+1, 102))";我理解到我们取最小值 102 的地步,什么?我没有得到min()的第一部分。有人可以解释一下吗?

对于它后面的"if 语句",这并不总是正确的,因为 float('inf') 取最大可能的值?这里的任何解释也很好,谢谢。

这不是 102 的最小值。

xrange(T[i]+1, 102)是从T[i]+1101的整数序列。这些用作nxt[t]t的值。 然后min()返回nxt的所有元素的最小值。

nxt[t] for t in xrange(T[i]+1, 102)

是一个生成器表达式,它返回该值序列,并将该序列传递给min()以计算最小值。

关于if语句,如果找不到温暖的日子,那将是不正确的,因为所有nxt值都将inf。发生这种情况时,我们跳过分配给ans[i],保留最初给出的0值。

最新更新