Python

Як використовувати Zip-функцію в Python

Як використовувати Zip-функцію в Python
У цій статті буде розглянуто посібник із функції “zip”, доступний у стандартній бібліотеці модулів Python. Цей метод дозволяє поєднувати та поєднувати елементи декількох ітерабельних об'єктів. Потім ви можете запустити подальшу логіку на цих парах. У багатьох випадках використання функції “zip” набагато ефективніше і чистіше, ніж використання кількох вкладених циклів “for”.

Про функцію Zip

Як зазначалося раніше, функція “zip” використовується для створення пар з елементів декількох ітерабельних об’єктів. Розглянемо приклад нижче, щоб зрозуміти основний синтаксис та використання функції zip:

list1 = ["a", "b", "c"]
list2 = ["яблуко", "кулька", "кішка"]
zip = zip (list1, list2)
друк (список (заархівований))

Перші два твердження у наведеному вище зразку коду визначають два списки, що містять деякі елементи. Далі використовується функція “zip”, передаючи як аргументи змінні “list1” та “list2”. Це основний синтаксис функції “zip”. Вам просто потрібно передати списки або інші допустимі впорядковані ітерабелі як аргументи, елементи яких ви хочете поєднати. Нарешті, оператор print використовується для отримання виводу змінної “zipped”. Після запуску зразка коду, згаданого вище, ви повинні отримати такий результат:

[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]

Зверніть увагу, що функція “zip” повертає об’єкт типу “zip”, а не список. Вам потрібно перетворити його на ітерабельний тип, як показано у заяві на друк вище.

Простіше кажучи, функція “zip” забирає елементи одного і того ж індексу з двох списків і поєднує їх як пару в кортежі. Отже, 0-й елемент із “list1” поєднується з 0-м елементом “list2”, 1-й елемент із “list1” поєднується з 1-м елементом “list2” тощо. Функція Zip рухається зліва направо, і кортеж, що містить спарені елементи, має такий самий індекс, як елементи, що зберігаються в них.

Використання Zip, коли взаємодіючі елементи не мають однакову кількість елементів

У наведеному вище прикладі обидва списки мають однакову кількість елементів. Якщо ви маєте справу з кодом, де обидва списки не мають однакову кількість елементів, функція “zip” зупиниться на останньому елементі списку, що має найменшу кількість елементів.

У наведеному нижче прикладі функція “zip” зупиниться на елементі “c”, незалежно від того, що “list2” має ще один елемент.

list1 = ["a", "b", "c"]
list2 = ["яблуко", "кулька", "кішка", "лялька"]
zip = zip (list1, list2)
друк (список (заархівований))

Після запуску зразка коду, згаданого вище, ви повинні отримати такий результат:

[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]

Під час використання функції Zip можна використовувати більше двох взаємодіючих речовин

Зазвичай функція “zip” використовується для порівняння двох об’єктів, що піддаються ітерації. Однак ви можете передати будь-яку кількість ітерацій як аргументи функції “zip”. Принцип зупинки на останньому елементі найкоротшого списку все ще буде застосовним.

list1 = ["a", "b", "c"]
list2 = ["яблуко", "кулька", "кішка", "лялька"]
list3 = ["5", "3"]
zip = zip (list1, list2, list3)
друк (список (заархівований))

Після запуску зразка коду, згаданого вище, ви повинні отримати такий результат:

[('a', 'apple', '5'), ('b', 'ball', '3')]

Створення індивідуальних списків із об’єкта типу Zip

Якщо у вас вже є об’єкт “zip”, ви можете використовувати його для повторного заповнення окремих списків, які раніше використовувались, коли функція zip була вперше викликана до них.

list1 = ["a", "b", "c"]
list2 = ["яблуко", "кулька", "кішка", "лялька"]
list3 = ["5", "3"]
zip = zip (list1, list2, list3)
l1, l2, l3 = zip (* на блискавці)
друк (список (l1), список (l2), список (l3))

Після запуску зразка коду, згаданого вище, ви повинні отримати такий результат:

['a', 'b'] ['apple', 'ball'] ['5', '3']

У зразку коду, наведеному вище, об’єкт “zip” спущений за допомогою оператора “*”. Потім спущені результати подаються в іншу функцію виклику zip, яка створює оригінальні списки. Зверніть увагу, що ви не зможете повернути всі елементи у вихідні списки, якщо списки неоднакової довжини використовувались, коли об’єкт “zip” створювався вперше.

Використання Zip, коли ви хочете зберегти елементи з найдовшого ітеративного

У декількох прикладах вище ви могли помітити, що функція “zip” за замовчуванням зупиняється на останньому елементі найкоротшого ітеративного. Що робити, якщо ви хочете, щоб він продовжував ітерацію, поки не досягне останнього елемента найдовшого ітеративного?

У такому випадку вам доведеться використовувати метод “zip_longest ()” із модуля “itertools” Python. Він працює так само, як функція “zip”, з однією невеликою різницею, що вона зупиняється на останньому елементі найдовшого ітеративного типу.

з itertools імпортувати zip_longest
list1 = ["a", "b", "c"]
list2 = ["яблуко", "кулька", "кішка", "лялька"]
list3 = ["5", "3"]
zip = zip_longest (list1, list2, list3)
друк (список (заархівований))

Після запуску зразка коду, згаданого вище, ви повинні отримати такий результат:

[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', None), (None, 'doll', None) ]

Відсутні значення заповнюються як об’єкти типу “Немає”. Ви також можете вказати своє власне значення для заповнення, передавши додатковий аргумент "fillvalue" методу "zip_longest".

з itertools імпортувати zip_longest
list1 = ["a", "b", "c"]
list2 = ["яблуко", "кулька", "кішка", "лялька"]
list3 = ["5", "3"]
zip = zip_longest (list1, list2, list3, fillvalue = "my_value")
друк (список (заархівований))

Після запуску зразка коду, згаданого вище, ви повинні отримати такий результат:

[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', 'my_value'), ('my_value', 'doll ',' my_value ')]

Висновок

Функцію Zip можна емулювати, використовуючи деякі цикли та оператори умов. Однак це допомагає підтримувати впорядкованість та чистоту коду, видаляючи непотрібні багатослів'я та повторювані твердження.

How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...
Безкоштовні ігри з відкритим кодом для розробки ігор Linux
У цій статті буде розглянуто перелік безкоштовних ігрових механізмів з відкритим кодом, які можна використовувати для розробки 2D та 3D ігор на Linux....
Підручник Тінь розкрадача гробниць для Linux
Shadow of the Tomb Raider - дванадцяте доповнення до серії Tomb Raider - франшизи екшн-пригодницької гри, створеної Eidos Montreal. Гру сприйняли як к...