2013-09-29 61 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號(第二次進入主列表)沒有定義的長度。但是,如果出現這種情況,您仍然可以捕獲異常並打印出某些內容,例如

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

for entry in myList: 
    try: 
     l = len(entry) 
     print "Length of", entry, "is", l 
    except: 
     print "Element", entry, "has no defined length" 
0

首先,使用該元素變量作爲訪問列表項的索引是多餘的。當在Python中循環寫,你是通過每個項目列表中的迭代,使得在迭代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,反之亦然。 如果只是一個練習,那應該不是問題。

相關問題