连接两个列表python Codecademy的函数

时间:2017-03-09 18:55:30

标签: python list

我被困在前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)

我无法弄清楚出了什么问题。

3 个答案:

答案 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