2017-11-29 1 views
-1

두 목록을 비교하고 싶습니다. 예 :목록 비교는 어떻게 작동합니까?

a = [8,9,9,11] 

b = [8,7,20,10] 

if a >= b : 

    print "true" 

"true"이 인쇄됩니까? 다음과 같이

8 >= 8 is true 

9 >= 7 is true 

9 >= 20 is false but the program return true 

11 >= 10 is true 
+0

당신이 대부분의 결과를 원하는? –

+2

찾고있는 출력을 분명히 할 수 있습니까? 'False'의 결과를 원하거나'(True, True, False, True) '와 같은 시퀀스를 찾고 있습니까? –

+0

기본적으로 튜플 (또는 목록)은 문자열 비교 방법과 유사하게 비교됩니다. 비교는 해당 항목이 같지 않은 쌍 (또는 항목 하나가 부족한 항목)을 찾을 때까지 해당 항목을 검사 한 다음 비교를 중지합니다. –

답변

1

당신은 비교의 모든 True입니다 확인하는 것이 현명 다음 all 기능을 사용하여 두 목록 요소를 비교하는 지능형리스트를 사용할 수 있습니다 : 당신은 의미

a = [8,9,9,11] 
b = [8,7,20,10] 
all(a[i]>=b[i] for i in range(len(a))) # False 
+1

[내 의견 : Mahesh Karia] (https://stackoverflow.com/questions/47548113/how-to-compare-8-9-9-11-vs-8-7-20-10#comment82053005_47548232) –

+1

또한 OP (아마)는 모든 요소 쌍을 비교하지 않으므로 double for 루프가 올바르지 않습니다. –

+0

@ PM2Ring, 그래요, 요점을 보았지만 목록 이해력에'중단 '을 사용할 수 없기 때문에 처음에는'거짓'이 발생할 때 어떻게 멈출 수 있습니까? – Arman

1
당신은 지능형리스트 사용할 수 있습니다

모든 기능 : 나는 값 이 같은 수직을 비교하려는

코드 :

a = 8,9,9,11 
b = 8,7,20,10 
print all([(a > b) for a, b in zip(a,b)]) 

출력 :

False 
+2

리스트 이해력이 아닌'all' 또는'any'에 생성자 표현식을 전달해야합니다 . 이 두 기능은 모두 단락되어 결과가 명확 해지 자마자 처리를 중단합니다. 당신이 그들에게 목록 comp를 먹이면 전체 목록은 작업을 시작하기 전에 만들어 져야만합니다. 그러나 당신이 gen exp를 먹이면 결과를 결정하는 데 필요한만큼의 항목 만 생성됩니다. –

관련 문제