わからないこと:
素数を出す以下のlambda関数を見かけたのだがイマイチ構造が理解できない。
素数2から30までの数字の入ったリストをなぜx==i
とx%i
の二つ(しかもor)で仕分けする必要があるのかがわからない。
ソースコード:
nums = range(2,31) for i in range(2,8): nums = list(filter(lambda x: x == i or x % i, nums)) print(nums)
現時点での理解:
lambdaを使ってnumsの中の要素2~30それぞれを2から7の要素iを使って一個ずつ調べていく。lambda内の仕分けを除けばpythonの基本(for loop, range)の仕組みは分かっている。これはあまり効率的な方法ではないと聞いた。pythontutor.comで調べてもinfinite loopとして表示されてしまうため途中でプログラムが終わってしまっている。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。