在这种情况下,由于选择标准,我提出了以下列表:
allowed_max = [21, 21, 21, 18, 16, 17, 22, 36, 36, 36, 34, 34, 13, 13, 13, 12, 26, 26, 28, 28, 28, 27, 26]
当我使用以下命令对列表进行索引以引用它的原始列表时;
index_max = [data_series.index(i) for i in allowed_max]
打印列表后,我将获得以下值:
index_max = [5, 5, 5, 6, 7, 14, 15, 16, 16, 16, 18, 18, 26, 26, 26, 27, 32, 32, 34, 34, 34, 35, 32]
现在,我只希望列表中的值等于模式宽度,在此场景中为3。
pattern_width = 3
因此,在这种情况下,我想要从列表中取出并追加到新列表中的值是5,16,26和34。 我应该使用什么命令来获得最终答案?
final_answer = [5, 16, 26, 34]
注意:我不允许使用numpy。谢谢!
答案 0 :(得分:1)
您可以迭代index_max
并检查当前项目与以下两项之间的相等性:
final_answer = [
index_max[i]
for i in range(len(index_max)-2)
if index_max[i] == index_max[i+1] == index_max[i+2]
]
或者,如果订单不重要且您只想计算项目,则可以使用Counter
对象:
from collections import Counter
counter = Counter(index_max)
final_answer = [ key for key, val in counter.items() if val == 3 ]
(第二种解决方案产生[5, 16, 26, 32, 34]
- 不完全是你所要求的。)