2013-09-29 2 views
-1

문제 : 내 솔루션으로 시도Len() 함수를 사용하여 목록의 각 요소 길이를 반환하는 방법은 무엇입니까?

Write a loop that traverses:

['spam!', 1, ['Brie', 'Roquefort', 'Pol le Veq'], [1, 2, 3]] 

and prints the length of each element.

:

list = ['spam!', 1,['Brie', 'Roquefort', 'Pol le Veq'], [1,2,3]] 
element = 0 

for i in list: 
    print len(list[element]) 
    element += 1 

그러나이 오류 수신 :의 TypeError: object of type 'int' has no len()

+0

'1'의 길이는 얼마입니까? 그리고 '1323'은 어떨까요? 현재 입력에 대해 예상되는 결과는 무엇입니까? –

+1

'list'를 변수 이름으로 사용하지 마십시오. 그렇지 않으면 더 많은 오류가 발생할 수 있습니다. –

답변

1

다른 사람들이 지적했듯이, 숫자 1 (두 번째 항목을 주 목록)에 정의 된 길이가 없습니다. 하지만 예외가 발생하면 예외를 잡아 내고 인쇄 할 수 있습니다 (예 :

0

우선, 해당 요소 변수를 색인 항목으로 사용하여 목록 항목에 액세스하는 것은 불필요합니다. 파이썬에서 루프를 작성할 때, 당신은 목록의 각 항목을 반복하는 등, 그에 반복 1 :

for item in [1, [1,2,3]]: 
    # item = 1 
    ... 

그리고 다음 반복에

: 항목에 대해 [1, [1,2,3 ]] : # item = [1, 2, 3] ...

다음 문제는 목록에 정의 된 길이가없는 항목이 있다는 것입니다. 나는 당신이 수행 할 작업 모르겠지만, 항목이 정수 경우 솔루션 (자리에) 항목의 길이를 인쇄 할 수있는이있다 :

items = ['spam!', 1,['Brie', 'Roquefort', 'Pol le Veq'], [1,2,3]] 

for item in items: 
    if isinstance(item, int): 
     print(len(str(item))) 
    else: 
     print(len(item)) 
0

만 가능한 해결 방법은 int 유형을 str으로 변경하는 것입니다. 운동 일 뿐이라면 문제가되지 않아야합니다.

관련 문제