順番を保持してリストの重複を除く

リストから同じ値を除いて重複のないリストを作りたいって Google 先生 に訊いたら、 set 型にした後リストに戻せば重複なくなるよ!、って書いてある先達のブログエントリーを教えてくれました。 うん、知ってた。

実行した限りでは値が入れ替わることはなかったのですが、 set 型には順番の概念がないし、それに list → set → list ってなんの処理もしないのに、型をころころ転がすのは気持ち悪いじゃないですか。

だからこれでいいんじゃないの、と思ったのですが、違うのかな。 処理速度云々は考えていません。

>>> list = ['Red', 'Yellow', 'Yellow', 'Blue', 'White', 'Black', 'Black', 'Blue', 'White', 'Pink']
>>> list = [list[x] for x in range(0, len(list)) if not list[x] in list[:x]]
>>> list
['Red', 'Yellow', 'Blue', 'White', 'Black', 'Pink']