ブログ


スパイシー技術メモ


【CheckIOに挑戦②】 ミッションスタート!

CATEGORY: プログラム

こん○○は!

さっそく、先日、CheckIOに、入会できたところですが、
コーポレートサイトはリニューアル準備のためブログの更新が遅れておりました。

入会するとこのようなゲーム画面がまっております。

楽しそうですね~。
さっそく、第一ミッションに「Non-unique Elements」に挑戦します。

またまた意訳です。

整数型のリストがあります。そのリストは空ではありません。そのリストから、重複している要素のみを抜き出したリストを作ってください。いいかえると、ぼっちな要素だけを削除してください(涙)。あと、結果のリストと元のリストは、要素の順番が変わらないようにしてくださいね。サンプルのデータは次の通り。

non-unique-elements.png

さっそく解いてみます。まず、ベタに。公式マニュアルから、要素の検索方法、取得&削除、追加方法を調べました。

先頭から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]

こちらもパス!シンプルでいいですね~。






プレスリリース

人気ブログ記事

採用情報

最新ブログ記事








ページの先頭へ