私、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の倍数のみフィルタリング出来た。