列表扁平化


def flatten_lists(nested):
'''
>>> flatten_lists([[0], [1, 2], 3])
[0, 1, 2, 3]
'''
list_of_lists = ([[0], [1, 2], 3])
List_flat =  []
for i in range(len(list_of_lists)): 
for j in range (len(list_of_lists[i])): 
List_flat.append(list_of_lists[i][j]) 
return List_flat

我想压平列表[[0], [1, 2], 3],但我遇到了错误:

TypeError: object of type 'int' has no len()

如何解决这个

您试图将外部列表的每个元素都视为列表。问题是内部列表中的某些元素不是列表。对于您的代码,一个简单的修复方法是将内部for循环封装在try/except块中:

for i in range(len(list_of_lists)): 
try:  # if the element is a list then add it
for j in range (len(list_of_lists[i])): 
List_flat.append(list_of_lists[i][j]) 
except TypeError:  # so, if iteration fails, the element isn't a list
List_Flat.append(list_of_lists[i])

最新更新