我被困在前18,章节列表和CODECADEMY的功能。 “创建一个名为flatten的函数,它接受一个列表,并将属于它的所有子列表连接到一个列表中。” “1在第3行,定义一个名为flatten的函数,其中一个参数称为列表。 2创建一个名为results的新空列表。 3遍历列表。调用循环变量数。 4迭代数字。 5对于每个数字,.append()将其转换为结果。 6最后,返回函数的结果。“
这是我的代码:
错误:
哎呀,再试一次。 flatten([[1,2],[3,4]])返回[1,2,3,4,5,6,7,8,9,1,2,3,4]而不是[1,2] ,3,4]
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
# Add your function here
results=[]
def flatten(lists):
for numbers in lists:
for number in numbers:
results.append(number)
return results
print flatten(n)
我无法弄清楚出了什么问题。
答案 0 :(得分:0)
您的错误是您在全局范围内声明了results
列表,而您应该在函数范围内声明它。
由于results
不在函数范围内,因此当您第二次运行flatten()
时,它不会重置。相反,新平展的数组将添加到上一次运行的数组之上。
你应该在你的函数中移动results
,如下所示:
def flatten(lists):
results[]
for numbers in lists:
for number in numbers:
results.append(number)
return results
这样每次运行函数时它都会重置,从而返回正确的结果。
答案 1 :(得分:0)
转换它:
results=[]
def flatten(lists):
到此:
def flatten(lists):
results=[]
答案 2 :(得分:0)
您的数据输入错误了吗?
如果您替换第一行代码
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
同
n = [[1, 2], [3, 4]]
。
输出
[1, 2, 3, 4]
此外,您应将results=[]
放在函数def flatten(lists):
def flatten(lists):
results=[]
for numbers in lists:
for number in numbers:
results.append(number)
return results