Когда вы умножаете список на N, он фактически создает новый список, состоящий из N исходных списков.
Позвольте мне привести вам пример. Когда мы будем использовать следующую команду:
[1, 2, 3] * 2
Мы получим следующий список:
[1, 2, 3, 1, 2, 3, 1, 2, 3]
Таким образом, выполнение [False] * len (items) фактически создаст список с лен лен (предметов), каждый из которых является ложным.
Другой способ сделать то же самое может быть:
[False for _ in range(len(items))]
Удачи.