2013-09-29 32 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,反之亦然。 如果只是一个练习,那应该不是问题。

相关问题