我正在使用foreach循环遍历一个列表,我想做一些额外的事情来恰好是我遍历的x
之一(以下代码中特别是cryoTemp
)。我可以在循环的主体中添加一个简单的if
语句来添加此功能,但是由于每次迭代都会对if
语句进行评估,因此它在我的脑海中引发了一个潜意识的“错误代码”警报。 ,即使只会计算一次为true。有没有更聪明的,也许是更“ Pythonic”的方式来做到这一点?
for p in self.params:
< get parameter p from server >
< parse response >
log_in_redis_and_mysql(p, value)
# log cooling rate based on cryoTemp value
if p == 'cryoTemp':
self.pastCryoTemps.append(value)
# calculate average of queue when it fills up then remove the oldest (first) element
if (len(self.pastCryoTemps) == 4):
differences = []
for i in range(len(self.pastCryoTemps) - 1):
differences.append(-(self.pastCryoTemps[i] - self.pastCryoTemps[i + 1]))
average = sum(differences) / len(differences)
log_in_redis_and_mysql('cooling_rate', average)
self.pastCryoTemps.pop(0)
答案 0 :(得分:2)
如果知道哪个索引具有特殊情况,则可以执行以下操作:
for i, x in enumerate(y):
if i == known_index:
g(x)
else:
f(x)
如果不这样做,那么简单地将每个x
与谓词进行比较就没有问题。
答案 1 :(得分:0)
如果只需要修改列表中的一个元素,并且知道其值,则可以使用index函数,如下所示:
y = [...]
y[y.index(exact_element)] = desired_value