Як стиснути два списки в python
Часто вам може бути цікаво стиснути (або «об’єднати») два списки в Python. На щастя, це легко зробити за допомогою функції zip().
Цей підручник демонструє кілька прикладів практичного використання цієї функції.
Приклад 1: стисніть два списки однакової довжини в один список
Наступний синтаксис показує, як стиснути два списки однакової довжини в один:
#define list a and list b a = ['a', 'b', 'c'] b = [1, 2, 3] #zip the two lists together into one list list( zip (a,b)) [('a', 1), ('b', 2), ('c', 3)]
Приклад 2: стисніть два списки однакової довжини в словник
Наступний синтаксис показує, як стиснути два списки однакової довжини в словник:
#define list of keys and list of values keys = ['a', 'b', 'c'] values = [1, 2, 3] #zip the two lists together into one dictionary dict( zip (keys, values)) {'a': 1, 'b': 2, 'c': 3}
Приклад 3: стискання двох списків різної довжини
Якщо ваші два списки мають різну довжину, zip() буде скорочено до довжини коротшого списку:
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together into one list list( zip (a,b)) [('a', 1), ('b', 2), ('c', 3)]
Якщо ви хочете запобігти скороченню zip() до довжини найкоротшого списку, замість цього ви можете скористатися функцією zip_longest() із бібліотеки itertools .
За замовчуванням ця функція заповнює «Немає» для відсутніх значень:
from itertools import zip_longest #define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together without truncating to length of shortest list list( zip_longest (a, b)) [('a', 1), ('b', 2), ('c', 3), ('d', None)]
Однак ви можете використовувати аргумент fillvalue , щоб вказати інше значення заповнення:
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together, using fill value of '0' list( zip_longest (a, b, fillvalue= 0 )) [('a', 1), ('b', 2), ('c', 3), ('d', 0)]
Ви можете знайти повну документацію для функції zip_longest() тут .