Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将无限列表解析为一个列表_Python 3.x_List_Multidimensional Array - Fatal编程技术网

Python 3.x 将无限列表解析为一个列表

Python 3.x 将无限列表解析为一个列表,python-3.x,list,multidimensional-array,Python 3.x,List,Multidimensional Array,我的任务是使用递归构建代码。任务是获取一个列表,其中可以包含无限多的列表,并将其设置为一个列表 到目前为止,我的情况如下: def flat_list(array): new_array =[] for i in range(0,len(array)): if len(str(array[i])) > 1: flat_list(array[i:i+1]) else: new_array += a

我的任务是使用递归构建代码。任务是获取一个列表,其中可以包含无限多的列表,并将其设置为一个列表

到目前为止,我的情况如下:

def flat_list(array):
    new_array =[]
    for i in range(0,len(array)):
        if len(str(array[i])) > 1:
            flat_list(array[i:i+1])
        else:
            new_array += array[i:len(str(array))-1]
            return new_array
以下是它需要通过的测试:

assert flat_list([1, 2, 3]) == [1, 2, 3]
assert flat_list([1, [2, 2, 2], 4]) == [1, 2, 2, 2, 4]
assert flat_list([[[2]], [4, [5, 6, [6], 6, 6, 6], 7]]) == [2, 4, 5, 6, 6, 6, 6, 6, 7]
assert flat_list([-1, [1, [-2], 1], -1]) == [-1, 1, -2, 1, -1]
我的回复是:

flat_list([1, [2, 2, 2], 4])
my result: [1,[2,2,2],4]
right answer: [1,2,2,2,4]
我想我的问题是在每个条目上创建一个新数组的新局部变量,我怎么能返回一个列表而没有其他列表

这项任务不需要使用numpy,但如果您也能向我展示如何使用numpy来完成,它将真正教育我。:) 感谢您的回答

试试这个:

def flatten(S):
if S == []:
    return S
if isinstance(S[0], list):
    return flatten(S[0]) + flatten(S[1:])
return S[:1] + flatten(S[1:])
工作原理: 1.列表作为参数传递给递归函数,以展平列表。 2.在函数中,如果列表为空,则返回列表。
3.否则,将使用子列表作为参数递归调用函数,直到整平整个列表。

我建议您以下建议:它迭代列表,如果遇到的项是列表,则在将其附加到结果整平列表之前递归整平它:

def flat_list(aList):
    result = []
    for i in aList:
        if isinstance(i, list):
            result += flat_list(i)
        else:
            result.append(i)
    return result

如果是这样的话,你能用评分板下的绿色复选框选择答案作为“接受”答案吗?现在我知道了,非常感谢,是不是用了更短的numpy?通常你会看到“最好”的代码不是短的代码,而是可读的代码。我会选择它,只是等待几分钟后打开选项