Думаю, этого можно добиться с помощью рекурсии. Некоторый код.
permutation = [0]*10 # size of this list has to be equal to lenth of list1 + length of list2. (you can have 4 as the size of the list).
def task(list1,list2,index):
if len(list1)==0 and len(list2)==0: # if length of both the list is 0, we print the
print(permutation) # permutation list
return
if len(list1)>0:
permutation[index] = list1[0]
modified_list1 = list1[:] # Since lists in python are passed by reference, I am making a copy of the list
modified_list1.pop(0) # Removing the first element
task(modified_list1,list2,index+1) #and calling the function again using the modified list.
if len(list2)>0:
permutation[index] = list2[0]
modified_list2 = list2[:]
modified_list2.pop(0)
task(list1,modified_list2,index+1)
if __name__=="__main__":
list1 = [1]
list2 = [4,5,6]
task(list1,list2,0)
Рекурсивные решения могут быть немного сложными для понимания, я рекомендую вам взять копию и перо и попробовать смоделировать его для небольшого ввода, вы поймете, как все работает.
Для вашей следующей задачи, когда мы печатаем список перестановок, вы можете вычислить разности соседних чисел и сохранить результат любым способом.