2014-02-22 2 views
5

다음을 수행하기 위해 한 줄로 된 목록을 작성하려고했습니다. 정수와 정수의 배열이 주어지면 int1, 원래 어레이 0에서 그 위치에 int1이있는 경우 새 배열에 1이있는 0과 1의 새로운 배열을 만들고 싶습니다.파이썬 목록 comprehensions : 배열의 모든 요소를 ​​0 또는 1로 설정하십시오.

참/거짓을 가질 방법이 있습니까 1/C 에서처럼 0?

array1 = [1,4,2,4,5,6,4,3] 
array2 = [x == 4 for x in array1 ] 
=> [False, True, False, True, False, False, True, False] 

답변

9

단순히이 때문에 파이썬에서, Boolean is a subclass of int 작동이

array2 = [int(x == 4) for x in array1] 

출력

[0, 1, 0, 1, 0, 0, 1, 0] 

처럼 int 기능, int에 부울을 변환합니다.

2

조건식을 사용하십시오. 1 if x==4 else 0 또는 무엇이 있습니다.

+2

배열 2 = [1 배열 1에서 x의 X의 == 다른 4 0 경우] – MarkAWard

+1

답을 수정하십시오 @MrWardo에 의해 제안 –

2

TrueFalse은 이미 사용자가 원하는대로 으로 전송됩니다. 그냥 직접 int로 변환 :

>>> [int(t) for t in (True, True, False)] 
[1, 1, 0] 
관련 문제