Чтобы использовать счетчик, вам нужно создать список машин (путем извлечения каждой машины из списка пар) и подсчитать число экземпляров 3
, например, что-то вроде этого:
schedule = [[1, 0], [2, 1], [3, 2], [3, 3]]
lst_count = [ma for ma, _ in schedule].count(3) # using list and count
ВышеПодход неэффективен, потому что он создает список, и применяет рассчитывать на него.Более эффективный подход заключается в использовании выражения генератора, как предложено @schwobaseggl, одна альтернатива предлагаемому генератору заключается в следующем:
schedule = [[1, 0], [2, 1], [3, 2], [3, 3]]
gen_count = sum(1 for ma, _ in schedule if ma == 3) # using a generator
Наконец, оба подхода работают нормально, если вы собираетесь считать только экземпляры одного компьютера., если вы хотите, чтобы экземпляры нескольких машин, например, 1
и 3
, я предлагаю вам использовать Counter :
from collections import Counter
schedule = [[1, 0], [2, 1], [3, 2], [3, 3]]
counts = Counter(ma for ma, _ in schedule) # using Counter
print(counts[3])
print(counts[1])
Output
2
1
Обновление
Помимо вышеупомянутых подходов, вы можете использовать простой цикл for
и переменную счетчика:
schedule = [[1, 0], [2, 1], [3, 2], [3, 3]]
counter = 0
for ma, _ in schedule:
if ma == 3:
counter += 1
print(counter) # 2
Примечание
Запись ma, _ = x
называется распаковкой.Когда вы пишете ma, _
, Python ожидает, что каждый элемент списка schedule
представляет собой пару элементов.Например, x, y = [1, 2]
присваивает значение 1
x
и значение 2
y
.Использование _
просто означает игнорирование второго значения.
Далее
- http://treyhunner.com/2018/03/tuple-unpacking-improves-python-code-readability/