【发布时间】:2016-05-26 17:49:33
【问题描述】:
我搜索并发现具有相同标题的问题也是(hereherehereherehere)但我不是在问这个问题。我遇到了这个问题:
编写一个函数来展平列表。该列表包含其他列表、字符串或整数。
我的代码是
t=[]
def flatten(aList):
for i in aList:
if type(i) !=list:
t.append(i)
else:
flatten(i)
return t
但是当我检查测试用例的代码时:
-
flatten([[1], [1]]):检查器告诉我输出是[1, 1, 1, 1]但在 codeskulptor 我得到正确的输出是[1, 1]。 -
flatten([[[1]], [[[5]]]]):检查器告诉输出是[1, 1, 1, 1, 1, 2, 3, 3, 2, 1, 0, 4, 5, 6, 7, 1, 5],但在codeskulptor 中告诉[1, 5]。
很多测试用例都存在这个问题。
然后我在 python 导师中检查了我的代码,发现在每次返回列表 t 时执行 if 语句后,最后当函数停止时,它返回最后编辑的列表 t。
我该如何解决这个问题,请帮我解决这个问题,是的,我是 python 新手,对 itertools、lambda 函数使用、生成器等一无所知。所以请在我能理解的上下文中告诉我。
【问题讨论】:
-
您拥有的第二个链接提供了此功能的工作示例。
-
@Morgan Thrapp 该代码也不能解决我的真正问题
-
仅用于代码样式:您应该使用
isinstance()而不是使用type(<var>) == type(<var>)。 -
为什么不呢?它适用于您的两个测试用例。如果这个问题实际上并没有问到你的问题,你应该问一个新问题。
-
@MorganThrapp:这个问题没有解释这个问题中的代码有什么问题。有时,如果 OP 正在尝试善意地尝试自行解决此问题,那么就某段不起作用的特定代码提出问题是可以。将其作为骗子关闭不会回答这个问题。
标签: python python-2.7