Подсчет между индексами списка

Я пишу функцию, которая содержит список чисел, и мне нужно найти способ подсчитать вхождения чисел 1 и 2, только для последних 3 значений списка.

Я, очевидно, знаю о .count() функция, но мне интересно, если есть способ использовать это только между данным индексом, в этом случае этот индекс будет ((len(history-3), (len(history)), history будучи списком, содержащим только значения 1 а также 2,

TL;DR: какой способ подсчета вхождений значений в списке между заданными индексами.

3 ответа

Как предположил Роки Ли, вы можете получить последние три элемента списка, нарезав его history[-3:], Затем вы можете использовать функцию подсчета на срезе, чтобы получить счет 1 а также 2 в последних трех местах в списке.

Например:

>>> history = [1, 2, 1, 2, 1, 2, 1, 2, 1]
>>> count_1 = history[-3:].count(1)
>>> count_2 = history[-3:].count(2)
>>> count_1
2
>>> count_2
1

Используйте негативную нарезку, чтобы получить последний n значения и считать с помощью count(),

lst[-3:].count(2) # counts number of 2 from last three elements of list lst.
lst[-3:].count(1) # counts number of 1 from last three elements of list lst.

Список имеет встроенный count метод подсчета значений.

Вы можете нарезать список и затем посчитать

arr = [2,1,3,3]
arr[-3:].count(3) # 2

И вы можете сделать то же самое с индексами, как указано здесь

arr[start:stop].count(3)  # items start through stop-1
arr[start:].count(3)      # items start through the rest of the array
arr[:stop].count(3)       # items from the beginning through stop-1
arr[:].count(3)           # a copy of the whole array

Я надеюсь, что это полезно.

Другие вопросы по тегам