Ça s'appelle une compréhension de liste.
Tu parcours un itérable neighbours avec une boucle for for word in neighbours et tu ajoutes l'élément en question dans une nouvelle liste [word for word in neighbours] uniquement si l'élément n'est pas présent dans l'itérable seen : if not word in seen.
Ensuite tu assignes ta compréhension à une variable nextCandidates.
Exemple :
seen = ['Pierre', 'Paul', 'Henri', 'Jacques']
neighbours = ['Mathias', 'Alexandre', 'Jacques', 'Alfred', 'Titouan', 'Pierre']
nextCandidates = [person for person in neighbours if not person in seen]
# nextCandidates = [person for person in neighbours if person not in seen] # <- en général on utilise plutôt cette syntaxe qui est plus explicite
print(nextCandidates)
Affiche :
['Mathias', 'Alexandre', 'Alfred', 'Titouan']