我有一个包含大量数据的列表。如果我想将 if 语句设置为下面的伪代码:
if data[i] to data[i+100] < 50:
data[i] == 1
有什么方法可以让我不需要输入如下所示的内容吗?
data[i] <50 and data[i+1] <50 and data[i+2] <50 and .... and data[i+100] <50:
因为这太耗时了。如果有人知道更快的方法,请告诉我。赞赏!
请您参考如下方法:
是的,您可以使用 all(..) 对列表进行切片:
if all(x < 50 for x in data[i:i+101]):
data[i] = 1 # probably you want assignment?
你必须将 i:i+101 写成切片(而不是 i:i+100),因为上限是不相容的.
或者您可以使用 range(..) 并保存列表的切片副本:
if all(data[j] < 50 for j in range(i,i+101)):
data[i] = 1 # probably you want assignment?
请注意,虽然您没有单独输入所有这些条件,但 Python 当然仍会执行迭代(并评估最多 101 个这样的表达式)。
