在python列表中打印选定的索引

时间:2018-04-21 04:10:17

标签: python-3.x list indexing

在这种情况下,由于选择标准,我提出了以下列表:

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。谢谢!

1 个答案:

答案 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] - 不完全是你所要求的。)