Python 3.10+Циклыфункция
zip(strict=True)
итерация
Параметр strict=True (Python 3.10+) заставляет zip() выбрасывать ValueError, если переданные итерируемые объекты имеют разную длину. Без strict= zip молча останавливается на самом коротком.
Синтаксис
zip(*iterables, strict=False)
Ставьте strict=True всякий раз, когда равная длина — это инвариант, на который вы рассчитываете: молчаливая потеря хвоста превращается в громкую ошибку прямо в месте бага. Учтите, что проверка ленивая: ValueError вылетает не при вызове zip(), а по ходу итерации — в момент, когда более короткий объект исчерпался.
Примеры
print(list(zip([1,2],["a","b"]))) # → [(1, 'a'), (2, 'b')]
print(list(zip([1,2,3],["a","b"]))) # → [(1, 'a'), (2, 'b')] (3 потеряна)
try:
list(zip([1,2,3],["a","b"], strict=True))
except ValueError as e:
print("ValueError:", e) # → ValueError: zip() argument 2 is shorter than argument 1
print(list(zip([1,2],["a","b"], strict=True))) # → [(1, 'a'), (2, 'b')]
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности