您可以使用列表解析来做到这一点,enumerate 和 zip。
x = [0.0, 0.0, 0.0, 0.6931471805599453, 0.6931471805599453, 0.6931471805599453, 0.6931471805599453, 1.0986122886681098, 1.0986122886681098]
print([i for i, t in enumerate(zip(x, x[1:])) if t[0] != t[1]])
>>> [2, 6]
基本上,您将列表与自身移动 1 相结合。您只需要两个列表之间的值不同的索引。
如果你有非常大的列表,那么你可以使用 numpy 模块来做类似的事情。
import numpy as np
x = np.array([0.0, 0.0, 0.0, 0.6931471805599453, 0.6931471805599453, 0.6931471805599453, 0.6931471805599453, 1.0986122886681098, 1.0986122886681098])
res = np.where(x[:-1] != x[1:])[0]
print(res)
>>> array([2, 6])