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 取消测试列表函数_Python_List_Function_Loops - Fatal编程技术网

Python 取消测试列表函数

Python 取消测试列表函数,python,list,function,loops,Python,List,Function,Loops,正在尝试取消此列表:[1、[2、3、[4、5、[6]]、[7、8]和[9] 进入此列表:[1,2,3,4,5,6,7,8,9] 到目前为止,这是我的职责: L = [1, [2, 3, [4, 5, [6]]], [7, 8], 9] def unnesting(L): my_list = [] for element in (L): if type(element) is list: my

正在尝试取消此列表:
[1、[2、3、[4、5、[6]]、[7、8]和[9]

进入此列表:
[1,2,3,4,5,6,7,8,9]

到目前为止,这是我的职责:

L = [1, [2, 3, [4, 5, [6]]], [7, 8], 9]

def unnesting(L):

     my_list = []

     for element in (L):
    
         if type(element) is list:             
             my_list.extend(element)
        
         else:
             my_list.append(element)
   
return my_list
除了它给我这个输出:[1,2,3,[4,5,[6]],7,8,9]

有关于如何取消此列表的解决方案或建议吗?谢谢大家!

您需要递归,否则,该函数只适用于嵌套深度为2的情况。重要的是,当列表再次包含列表时,您将面临相同的问题,即可以再次调用相同的函数

以下工作将起作用:

L=[1,2,3,4,5,6]],[7,8,9]
def unnest(lst1,lst2=无):
如果lst2为无:
lst2=[]
对于lst1中的x:
如果不存在(x,列表):
lst2.追加(x)
其他:
unnest(x,lst2)
返回lst2
展平=不最近(L)
打印(展平)

我认为您正在寻找一个简短的递归解决方案,请尝试以下方法:

L=[1,2,3,4,5,6]],[7,8,9]
def取消测试(我的_列表):
如果类型(我的列表)=int:
返回[我的清单]
返回和((取消我的\u列表中元素的测试(元素))[])
打印(取消测试(L))

如果您对这项工作有任何疑问,请在下面留下评论,我会尽力帮助您理解。

您可以尝试一下。我刚刚递归地调用了这个函数

my_list = []

def unnesting(L):

    for element in L:
        if type(element) is list:
            unnesting(element)
        else:
            my_list.append(element)
    return my_list

这是一种有点不同的方法。我不建议这样做。但是python允许我们以多种方式获得结果

def unnest(lst):
    _ = str(lst)
    _ = _.replace('[', '').replace(']', '').replace(',', '').replace(' ', '')
    return [int(i) for i in _]
L = [1, [2, 3, [4, 5, [6]]], [7, 8], 9]

unnest(L)


首先,您是否可以控制生成此嵌套结构的代码?只需递归地应用
untesting
函数即可。谢谢您的建议。实际上,我的教授告诉我:注意,你应该能够使用循环来解决这个问题,而不应该使用递归函数(我们在本课程中将不介绍)。我还认为我应该使用扩展函数,这个函数应该适用于任何列表,调用是:unnesting([1,[2,3,[4,5,[6]],[7,8],9])不幸的是,这不适用于此函数。您需要调用unnest和not unnestingal。因此,我不清楚当您将列表转换为字符串时,如何在不使用递归的情况下解决此一般问题。它允许您删除额外的字符。一旦删除,您可以转换回列表
def unnest(lst):
    _ = str(lst)
    _ = _.replace('[', '').replace(']', '').replace(',', '').replace(' ', '')
    return [int(i) for i in _]
L = [1, [2, 3, [4, 5, [6]]], [7, 8], 9]

unnest(L)