#!/usr/local/bin/python3 start = 'yamada' b = [('suzuki', 'satou'), ('yamada', 'tanaka'), ('tanaka', 'satou'), ('watanabe', 'suzuki')] ans = [] baton_holder = start ans.append(baton_holder) pairs = b.copy() while pairs: found = False for i, pair in enumerate(pairs): if baton_holder not in pair: continue found = True baton_holder = pair[(pair.index(baton_holder)+1)%2] ans.append(baton_holder) del pairs[i] break if not found: raise Exception('{} is not found'.format(baton_holder)) print(ans)