2012-03-06 3 views
0

여기에 문제가있는 코드 영역이 있습니다. T1과 T3는 목록의 두 목록입니다 : 여기 목록에 값이 있는지 검색 할 때 이상한 결과가 나타납니다.

for num in T1: 
    print num 
    print T3[0] 
    print type(num) 
    print type(T3[0]) 
    if num == T3[0]: 
     print 'they are the same!' 
    else: 
     print 'nope they are not!' 
    if T3.index(num): 
      print 'number exists in list!' 

은 결과입니다 : '! 번호가리스트에 존재하는'

[0, 0] 
[0, 0] 
<type 'list'> 
<type 'list'> 
they are the same! 

값 및 유형이 동일하지만 난이 표시되지 않는 경우 명령 줄에 list_name.index(value)을 테스트했을 때 작동하지만 여기서는 작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

4

목록에서 인수의 인덱스을 반환하고, 인수가 발견되지 않는 경우 ValueError을 제기 list.index() 방법. 확인

if T3.index(num): 

은 기본적으로 인수의 인덱스가 0이 아닌 경우 테스트하지만 예제에서는 0이되므로 확인에 실패합니다. 항목이 목록에 포함되어 있는지 테스트하고 싶을 것입니다.

if num in T3: 

을 사용하십시오.

+0

감사합니다. 완벽하게 작동했습니다. 언급하기로는 예제를 단순화하려고했지만 T3.index (num) 문은 try 문에 실제로 래핑되었습니다. 나는 Try의 흐름 제어에 좋지 않다는 것을 알고 당신의 방법은 실제로 내가 그것을 사용할 필요가없는 방법을 보여줍니다. 고맙습니다, 당신은 두 가지를 가르쳐주었습니다 (하나의 가격으로). –

0

문제는이 코드 줄에 있습니다

목록의 index() 방법이 수행
if T3.index(num): 
      print 'number exists in list!' 

: "값 x는 첫 번째 항목의 목록에 인덱스를 돌려줍니다 그것은이 경우 오류가 발생합니다. 그런 품목이 없다. "

목록에서 (0)을 찾을 첫 번째 값은 인덱스 0입니다. if 문은 0 값을 False로 처리하고 올바르게 수행하지 않습니다.

관련 문제