2013-06-23 3 views
3

목록의 이해와 % 기능

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

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

는 왜 그 대답을 않는 준다? 'i%3'의 의미는 무엇입니까?

감사합니다.

+0

'mylist = []'는 중복됩니다. 나는 그것을 제거하고 – jamylak

답변

5

예에서 %modulo operator입니다. a % ba/b의 나머지를 반환합니다. 3으로 나누어, 따라서 더 나머지가 없기 때문에 -9

[-9, -7, -5, -3, -1, 1, 3, 5, 7, 9] 

-9 % 3는 0과 같다 :

그래서 당신의 예에서 루프를 통해 간다. 그러나 5 % 3은 3이 5로 한 번 이동하기 때문에 2를 반환하고 5 - 3 == 2을 반환합니다.

not i % 3은 약간 까다 롭습니다. 먼저 i % 3이 평가됩니다. 결과가 0보다 크면 True으로 간주됩니다. not은 부울 값을 가져 오는 부울 연산자입니다. 따라서 not TrueFalse (및 not False is True)입니다.

0False으로 간주되므로 i % 3 == 0 인 경우 i이 새 목록에 포함됩니다. 이제


의 이유 print("%s %s", ("hello", "world")) 인쇄에 "Hello World"가 그 모듈로 연산자하지 않기 때문에이다. 그게 string formatting입니다. 문서는 나보다 잘 설명 할 것이다 : p. 단지 %도 사용됩니다.

+0

우수! 감사합니다 haidro :) – Emma

+0

@ Emma 당신은 환영합니다 :) – TerryA

2

i%3i을 3으로 나눌 때 남은 값입니다. 그러나 not 연산자를 사용하면 부울 (true/false) 값으로 변환됩니다. python은 0 false과 다른 숫자를 true으로 만들어 이것을 수행합니다. 따라서 i%3이 0 일 때 not i%3이 참이됩니다. 즉 i이 3으로 나눌 수있는 경우입니다.

range(-9,10,2)은 -9에서 시작하여 0보다 작 으면 2 씩 증가하는 정수를 생성합니다. 즉, -9와 +9 사이의 홀수 정수입니다. 따라서 조합은 -9와 +9 사이의 3으로 나눌 수있는 홀수 정수를 선택하는 것입니다. 정확히 표시 할 정수입니다. (-9, -3, 3, 9)

+0

그래서 '%'의 정의는 구분선이라는 것입니까? – Emma

+0

@Emma 실제로 모듈로 연산자라고합니다. [docs에 여기] 섹션이 있습니다. (http://docs.python.org/2/reference/expressions.html#binary-arithmetic-operations) – TerryA

+0

@Haidro님께 감사드립니다. – Emma

관련 문제