Рубрики

Python | Объединить два списка поочередно

Учитывая два списка, напишите программу на Python для объединения данных списков альтернативным способом, при условии, что оба списка имеют одинаковую длину.

Примеры:

Input : lst1 = [1, 2, 3]
        lst2 = ['a', 'b', 'c']
Output : [1, 'a', 2, 'b', 3, 'c']

Input : lst1 = ['name', 'alice', 'bob']
        lst2 = ['marks', 87, 56]
Output : ['name', 'marks', 'alice', 87, 'bob', 56]

Метод № 1: Понимание списка

# Python3 программа для объединения двух списков
# альтернативно

  

def countList(lst1, lst2):

    return [sub[item] for item in range(len(lst2))

                      for sub in [lst1, lst2]]

      
# Код драйвера

lst1 = [1, 2, 3]

lst2 = ['a', 'b', 'c']

print(countList(lst1, lst2))

Выход:

[1, 'a', 2, 'b', 3, 'c']

Есть альтернатива использованию списочного понимания с zip (), как указано ниже —

def countList(lst1, lst2):

    return [item for pair in zip(lst1, lst2 + [0])

                                 for item in pair]

Метод № 2: Использование itertools.cycle()

# Python3 программа для объединения двух списков
# альтернативно

from itertools import cycle

  

def countList(lst1, lst2):

    iters = [iter(lst1), iter(lst2)]

    return list(iter.__next__() for iter in cycle(iters))

      
# Код драйвера

lst1 = [1, 2, 3]

lst2 = ['a', 'b', 'c']

print(countList(lst1, lst2))

Выход:

[1, 'a', 2, 'b', 3, 'c']

Метод № 3: Использование reduce()

# Python3 программа для объединения двух списков
# альтернативно

import operator

from functools import reduce

  

def countList(lst1, lst2):

    return reduce(operator.add, zip(lst1, lst2))

      
# Код драйвера

lst1 = [1, 2, 3]

lst2 = ['a', 'b', 'c']

print(countList(lst1, lst2))

Выход:

(1, 'a', 2, 'b', 3, 'c')

Способ № 4: Использование модуля numpy

# Python3 программа для объединения двух списков
# альтернативно

import numpy as np

  

def countList(lst1, lst2):

    return np.array([[i, j] for i, j in zip(lst1, lst2)]).ravel()

      
# Код драйвера

lst1 = [1, 2, 3]

lst2 = ['a', 'b', 'c']

print(countList(lst1, lst2))

Выход:

['1' 'a' '2' 'b' '3' 'c']

Рекомендуемые посты:

Python | Объединить два списка поочередно

0.00 (0%) 0 votes