Изящный unpacking в python
Частенько бывает нужно проитерироваться по большой коллекции в которой лежат другие коллекции.
Возьмем для примера вот эту:
Очевидный способ пробежать по вложенным элементам - это чтение по индексу:
Но есть и другой способ сделать нечто похожее, со своими особенностями и преимуществами:
По сути, это хитро записанная распаковка листа/тупла, состоящего строго из одного элемента.
Это работает потому что, в python конструктором тупла является запятая, а не скобки.
А есть отличия?
Да.
Кажется, что сложно придумать что-то быстрее, чем чтение по индесу из начала списка - но распаковка оказывается быстрее, процентов на 10.
Есть и еще кое-что.
Если на вход попадут пустые списки, то оба варианта упадут с ошибками, правда, каждый со своей:
Но если на вход придут листы/туплы с более чем одним элементом, то итерация с распаковкой упадет, а с чтением по индексу - молча вернет первое значение. Возможно, это не лучший вариант, особенно если вспомнить вторую заповедь.