map is not list
Решая задачу из Advent of code, неожиданно споткнулся. Если отбросить лишнее, из строки получаю набор ключей и проверяю их на списках, есть ли они там
str_keys = '55 66 77'
numbers = [66, 22, 77, 44, 55, 33]
keys = map(int, str_keys.split(' '))
for _ in range(2):
cnt = 0
for key in keys:
if key in numbers:
cnt += 1
print(f'в списке есть {cnt} ключей')
print(type(keys))
Ответ озадачил, первая проверка отрабатывает как надо, вторая не работает:

И только когда пошёл смотреть дебагером - увидел ошибку. Всё элементарно, но как то раньше на эти грабли не наступал
Переменная keys вернёт список ключей - но только один раз. Это не список, а иттератор.
Тут нужно было либо сразу преобразовать в список keys = list(map(int, str_keys.split(' '))), либо прописать map в цикле вместо переменной for key in map(int, str_keys.split(' ')):
Written on December 6, 2023