I думаю вы ищете декартово произведение без повторяющихся строк.
Если так:
>>> ['{} - {}'.format(a,b) for a in list_a for b in list_b if a!=b]
['apple - banana', 'apple - melon', 'apple - grape', 'apple - orange', 'banana - apple', 'banana - melon', 'banana - grape', 'banana - orange', 'melon - apple', 'melon - banana', 'melon - grape', 'melon - orange', 'grape - apple', 'grape - banana', 'grape - melon', 'grape - orange', 'orange - apple', 'orange - banana', 'orange - melon', 'orange - grape']
Или, наPython 3.7:
>>> [f'{a} - {b}' for a in list_a for b in list_b if a!=b]
Чтобы ваша версия работала, просто добавьте в свой цикл continue
:
for x in list_a:
for z in list_b:
if x==z: continue
print(x,"-",z)
Или,
for x in list_a:
for z in list_b:
if x!=z: print(x,"-",z)