3

次のコードを使用している場合

[i for i in range(-9, 10, 2) if not i%3)] 

それは与えます

> (-9, -3, 3, 9)

なぜその答えを与えるのですか?とは'i%3'どういう意味ですか?

ありがとうございました。

4

2 に答える 2

5

あなたの例で%は、モジュロ演算子です。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 == 0i新しいリストに含まれます。


ここで、print("%s %s", ("hello", "world"))「hello world」と表示されるのは、モジュロ演算子ではないためです。それが文字列フォーマットです。ドキュメントは私よりもよく説明します:p。たまたまそれ%も使われています。

于 2013-06-23T03:38:51.307 に答える