Как заархивировать два списка в 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() здесь .

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.