コンテンツにスキップ

0102: 順序を保つ重複除去

問題

文字列のイテラブル values から、重複を取り除いたリストを作る関数 dedupe(values) を実装してください。 同じ文字列が複数回現れる場合は、最初に現れた位置だけを残します。

制約

  • 返り値はリストです。
  • 返り値の順序は、各文字列が最初に現れた順序とします。
  • 入力をリストに変換しなくても処理できるようにしてください。
  • 入力がリストであっても、元のリストを変更してはいけません。

>>> dedupe(["red", "blue", "red", "green", "blue"])
['red', 'blue', 'green']
>>> dedupe([])
[]
>>> dedupe(x for x in ["a", "a", "b"])
['a', 'b']

発展

大文字と小文字を区別せずに重複を判定する版を書いてください。

参考

  • 『Python Distilled』第1章「リスト」
  • 『Python Distilled』第1章「集合」
  • 『Python Distilled』第1章「イテレーションとループ」