次のコードを使用している場合
[i for i in range(-9, 10, 2) if not i%3)]
それは与えます
> (-9, -3, 3, 9)
なぜその答えを与えるのですか?とは'i%3'どういう意味ですか?
ありがとうございました。
次のコードを使用している場合
[i for i in range(-9, 10, 2) if not i%3)]
それは与えます
> (-9, -3, 3, 9)
なぜその答えを与えるのですか?とは'i%3'どういう意味ですか?
ありがとうございました。
あなたの例で%は、モジュロ演算子です。a % bの残りを返しますa / b。
したがって、あなたの例では、ループが通過します:
[-9, -7, -5, -3, -1, 1, 3, 5, 7, 9]
-9 % 3-9 は 3 で割り切れるため、0 に等しく、剰余はありません。ただし、5 % 33 は 5 に 1 回入るため、2 を返します5 - 3 == 2。
not i % 3少しトリッキーです。まず、i % 3評価されます。結果が 0 より大きい場合は、 と見なされTrueます。notブール値の負の値を取得するブール演算子です。(と)もそうnot Trueです。Falsenot False is True
0は と見なされるFalseため、 の場合i % 3 == 0はi新しいリストに含まれます。
ここで、print("%s %s", ("hello", "world"))「hello world」と表示されるのは、モジュロ演算子ではないためです。それが文字列フォーマットです。ドキュメントは私よりもよく説明します:p。たまたまそれ%も使われています。