Apr
10th
Thu
10th
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する処理なら、重複を排除しておく必要はないわけですが。
自分なりに書いたのが以下。
…