问题是这样的:
我有一系列lists
,总是包含两个items
。这些items
中的每一个都可以是string
或其他列表。目标是弄清楚如何使items
中的所有lists
出现在单个resultant_list
中,并返回resultant_list
。
到目前为止我的代码看起来像(其中nest是要剥离的列表):
def strip(nest):
result_list=[]
for item in nest:
if type(item) is str:
result_list.append(item)
else:
return result_list + strip(item)
我在哪里错了?
答案 0 :(得分:2)
如果您在return
块中else
,那么for
循环可能会过早终止,您不会迭代每个元素。等到循环结束后再返回任何内容。
def strip(nest):
result_list=[]
for item in nest:
if type(item) is str:
result_list.append(item)
else:
result_list.extend(strip(item))
return result_list
此外,这可能不会在您的特定情况下导致错误,但是:通常最好使用isinstance
来测试对象的类型而不是is
。例如。 if isinstance(item, str):
代替if type(item) is str: