演習「filterを使った3の倍数のフィルタリング」の解答一例

B!

私、Python初心者ですけど

入門書を終わらせて、2冊目に田中賢一郎さんの

「ゲームを作りながら楽しく学べるPythonプログラミング」

を学習しています。

 

 

通常ならここでAmazonのリンクを貼って

アフィリエイト!!!!!

なんでしょうけど、アフィはやりません。

 

 

その中の演習問題でなかなか解けなかった問題があり

30分くらいの格闘をしましてヘトヘトになりました。

なので、ここに解答一例を置いときます。

みておくれやす。

 

さて本題へ↓

 

基礎編66頁 【演習】filterを使って、配列の奇数のみ、3の倍数のみをフィルタリングしてください。

 

 

この問の前に、配列の偶数をフィルタリングしているので

それを真似てやってみますと

 

>>> list ( filter ( lambda b: b % 3 == 0,  [0,1,2,3,4,5,6,7,8,9] ) )

 

と推測できます。

そして抽出されてくるのは、

 

>>>[ 0, 3, 6, 9]

 

ここで問題が。

フィルタリングして出てきたリストには ”0” が入ってしまいます。

”0”は偶数なのです。この0を除去するのに手こずりました。

 

 

解答一例: ” and ” が鍵なのだ

 

 

じゃあいくよ

 

>>> list ( filter ( lambda b: b % 3 == 0 and b != 0,  [0,1,2,3,4,5,6,7,8,9] ) )

 

オレンジ色の部分が重要。

b != 0 として”0”を除去している。

それを ”and” で接続した。

 

こうすることで

 

>>>[ 3, 6, 9]

 

奇数のみ、3の倍数のみフィルタリング出来た。

最新の記事はこちらから