Ключевое слово zip — это встроенная функция Python, которую, я думаю, каждый разработчик или начинающий программист Python должен попробовать хотя бы один или два раза, особенно если вы просматриваете несколько списков одинакового размера. Давайте начнем с рассмотрения сигнатуры метода zip, чтобы лучше понять, как ее использовать.

zip(*iterables, strict=False) -> Кортежи

Функция zip проходит несколько итераций параллельно и имеет только два параметра: *Iterables и strict. Давайте быстро обсудим возможные значения для двух параметров и их влияние на результат. Начнем с обсуждения Iterables

*Итерации

Если вы новичок в python или не видели, что * используется вне умножения, тогда слушайте. * также известен как оператор распаковки, он используется для распаковки переменных в коллекции в произвольное количество переменных. Вот краткий пример распаковки ниже

используя оператор *

ABCs = ('A', 'B', 'C')
a, b, c = *ABCs
print(a)
>>> A

В приведенном выше быстром примере мы создаем кортеж, содержащий буквы A, B и C в одной переменной. Но нам нужны переменные для каждой буквы, поэтому мы распаковываем кортеж в несколько разных значений (т. е. a, b, c). Затем мы печатаем a, чтобы убедиться, что переменные были распакованы должным образом. Распаковка применяется только к структурам данных, которые имеют несколько значений.

Таким образом, посмотрев на *Iterables, мы можем сказать, что это коллекция, так как она использует оператор *. Ночто считается Iterable в Python? Iterable — это буквально все, что можно зациклить. В Python это относится к спискам, строкам, кортежам, наборам, словарям и многому другому. Вот быстрый фрагмент, использующий функцию zip, где мы предоставляем только *Iterables

x = [1, 2, 3]
y = ['a', 'b', 'c']
for xy_pair in zip(x, y):
    print(xy_pair)
>>> (1, 'a')
>>> (2, 'b')
>>> (3, 'c')

поэтому функция zip превратила элементы в обоих списках в пары кортежей. Таким образом, первый элемент в обоих списках составляет первый кортеж (1, «a»), затем второй элемент в обоих списках составляет второй кортеж (2, «b») и так далее. Но это довольно простое использование функции zip. Давайте рассмотрим параметр strict и его влияние на функцию zip.

строгий

Строгий параметр — это логическая переменная, что означает, что он может содержать только истинный или ложный результат. Поскольку функция zip по умолчанию устанавливает для параметра strict значение False, мы будем обсуждать только тот случай, когда strict имеет значение True. Поскольку функция zip имеет дело с объектами Iterable, которые обычно имеют одинаковый размер, она обычно перестает создавать новые кортежи, если один из списков, которые она читает, пуст. Но он делает это тихо, не сообщая пользователю об ошибках. Но когда strict имеет значение True, функция zip вернет ValueError, если какой-либо из Iterables, переданный zip, не совпадает с остальными Iterables. Вот пример строгости в действии.

list(zip(range(2), ['Hi', 'How', 'are', 'you'], strict=True))
Traceback (most recent call last):
  ...
ValueError: zip() argument 2 is longer than argument 1

Заключение

Надеюсь, вам понравился краткий пост об использовании функции zip в Python. Пожалуйста, оставьте комментарий, рассказывая о том, что было сделано правильно или неправильно с постом, потому что это единственный способ, которым я могу стать лучше. Я нашел немного расслабляющим написание небольшого поста, особенно после постов в блоге Deep Q-Network и SARSA. Я, вероятно, опубликую несколько небольших сообщений о некоторых полезных и встроенных функциях Python между сообщениями о глубоком обучении. А пока вот некоторые из моих прошлых постов в блоге, которые вы можете посмотреть ниже.

Сообщения об усиленном обучении и глубоком обучении







Не технические, но интересные посты









Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord.