Цикл с несколькими разными значениями

Как можно запустить цикл с разным количеством данных в нем?

a = [1,2,3,4]
b = [1,2,3]

for i,j in zip(a,b):
    print(i,j)

то выводит меньшую часть. Как можно сделать так, чтобы выводились оба, даже если у одного больше, чем у другого?


Ответы (1 шт):

Автор решения: videx
def merge_lists(list1, list2):
    if list1 > list2:
        ret_arr = []
        for i in range(len(list1)):
            try:
                ret_arr.append((list1[i], list2[i]))
            except:
                ret_arr.append((list1[i], None))
        return ret_arr
    elif list1 < list2:
        ret_arr = []
        for i in range(len(list2)):
            try:
                ret_arr.append((list1[i], list2[i]))
            except:
                ret_arr.append((None, list2[i]))
        return ret_arr
    elif list1 == list2:
        return list(zip(list1, list2))

Результат работы с массивом a и b:

[(1, 1), (2, 2), (3, 3), (4, None)]

Теперь выведем в виде указанном в вопросе:

a = [1, 2, 3, 4]
b = [1, 2, 3]
mergeList = merge_lists(a, b)

for i in mergeList:
    print(i[0], i[1])

Вывод:

1 1
2 2
3 3
4 None
→ Ссылка