Python Glossary English

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Сообщить о неточности