Есть ли способ применить izip_longest()
к спискам внутри списка?izip_longest в списке списков
Если у меня есть
somelist = [[1, 2, 3], "abcd", (4, 5, 6)]
есть способ сделать
izip_longest(somelist[0], somelist[1], ....)
Есть ли способ применить izip_longest()
к спискам внутри списка?izip_longest в списке списков
Если у меня есть
somelist = [[1, 2, 3], "abcd", (4, 5, 6)]
есть способ сделать
izip_longest(somelist[0], somelist[1], ....)
Вы можете распаковать список, с *
, как этот
my_list = [[1, 2, 3], "abcd", (4, 5, 6)]
izip_longest(*my_list)
Например,
from itertools import izip_longest
my_list = [[1, 2, 3], "abcd", (4, 5, 6)]
print list(izip_longest(*my_list))
Выход
[(1, 'a', 4), (2, 'b', 5), (3, 'c', 6), (None, 'd', None)]
Примечание: Использование list
в качестве имени переменного будет тенью предопределённых list
функцию
Если вы решили использовать значение пользовательских замен вместо None
, вы можете сделать это, как это
print list(izip_longest(*my_list, fillvalue = -1))
Выход
[(1, 'a', 4), (2, 'b', 5), (3, 'c', 6), (-1, 'd', -1)]
Используйте *args
призывающую синтаксис:
some_list = [[1, 2, 3], "abcd", (4, 5, 6)]
izip_longest(*somelist)
Этот синтаксис применяется все элементы somelist
в виде отдельных аргументов к вызываемому объекту.
Это относится ко всем вызовам, а не только к izip_longest()
.
Демо:
>>> from itertools import izip_longest
>>> some_list = [[1, 2, 3], "abcd", (4, 5, 6)]
>>> list(izip_longest(*some_list))
[(1, 'a', 4), (2, 'b', 5), (3, 'c', 6), (None, 'd', None)]
Используйте аргумент unpacking: 'izip_longest (* list)' –
Не используйте 'list' в качестве имени переменной, он маскирует встроенный тип. –