こん○○は!
さっそく、先日、CheckIOに、入会できたところですが、
コーポレートサイトはリニューアル準備のためブログの更新が遅れておりました。
入会するとこのようなゲーム画面がまっております。
楽しそうですね~。
さっそく、第一ミッションに「Non-unique Elements」に挑戦します。
またまた意訳です。
整数型のリストがあります。そのリストは空ではありません。そのリストから、重複している要素のみを抜き出したリストを作ってください。いいかえると、ぼっちな要素だけを削除してください(涙)。あと、結果のリストと元のリストは、要素の順番が変わらないようにしてくださいね。サンプルのデータは次の通り。
さっそく解いてみます。まず、ベタに。公式マニュアルから、要素の検索方法、取得&削除、追加方法を調べました。
先頭から1つづ取り出して、重複していれば結果リストに追加していくというベタなコードです(笑)
def checkio(data): out = [] while len(data) != 0: x = data.pop(0) if x in out or x in data: out.append(x) return out
なんか気持ち悪いですね~。超ベタすぎて、関数型をサポートしているPythonぽくない。ということで、関数型ぽいことを頑張ってみました。
さっきの公式マニュアルに指定した要素と同じ要素の数を調べるcountというメソッドがありました。また、以前チラ勉したことある、逐次処理するmap処理みたいなものがPythonにもないかと調べてみたら、リスト内包表記(python練習帳 リスト内包表記)というのがありましたので、こちらを使ってみました!
def checkio(data): return [x for x in data if data.count(x) != 1]
こちらもパス!シンプルでいいですね~。