which コマンドの実装 id:t2y-1979:20080409#1207749772 whichはPATHを頭から調べて最初に見つけたものを返すので、
順序を保持しないsetに入れるとまずい ループをbreakしないと最後に見つけたものを出力してしまう
と思います。
>>> set(['a', 'b', 'c', 'd'])
set(['a', 'c', 'b', 'd'])
順序が変わってます。 重複を排除するには、リストにuniqのようなメソッドがあればいいけど、ないみたいです。 こんな書き方ができました。ただ、遅いかも。
>>> l = ['a', 'b', 'b', 'c', 'a']
>>> [ x for i, x in enumerate(l) if x not in l[:i] ]
['a', 'b', 'c']
でも、頭から調べてbreakする処理なら、重複を排除しておく必要はないわけですが。 自分なりに書いたのが以下。 …
Time
2008-04-09 23:22
Notes