Here you have a way equivalent to the response of @ nano.galvao:
nao_comuns = list(set(a) ^ set(b))
But in a didactic way and programming the functionality you can do without using two cycles (I commented in the code some explanations):
def nao_comuns(a,b):
a_b = a+b # juntar as duas para percorrer todos os elementos
nao_comuns = []
for ele in a_b:
if ele not in a or ele not in b: # nao existe numa delas
nao_comuns.append(ele)
return nao_comuns
a = range(10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = range(0,20,2) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
print nao_comuns(a,b) # [1, 3, 5, 7, 9, 10, 12, 14, 16, 18]
DEMONSTRATION
With list understanding you can do this cycle on a line:
def nao_comuns(a,b):
a_b = a+b # juntar as duas para percorrer todos os elementos
return [ele for ele in a_b if ele not in a or ele not in b]
a = range(10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = range(0,20,2) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
print nao_comuns(a,b) # [1, 3, 5, 7, 9, 10, 12, 14, 16, 18]
DEMONSTRATION
Using a generator :
def nao_comuns(a,b):
a_b = a+b # juntar as duas para percorrer todos os elementos
for ele in a_b:
if ele not in a or ele not in b: # nao existe numa delas
yield ele
a = range(10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = range(0,20,2) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
print list(nao_comuns(a,b)) # [1, 3, 5, 7, 9, 10, 12, 14, 16, 18]
DEMONSTRATION