Подсчет между индексами списка
Я пишу функцию, которая содержит список чисел, и мне нужно найти способ подсчитать вхождения чисел 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
Я надеюсь, что это полезно.