我有一个嵌套的整数列表,嵌套列表中的每个列表的长度均为x,并且在嵌套列表中有y个此类列表。我如何“拉平”此列表,即以不使用库的优化方式将列表转换为一维列表。我看到了一个扁平化方法,该方法适用于所有长度可变的嵌套列表,但是由于列表中元素的类型不断进行递归检查,因此我发现效率很低。
示例:(其中x = 3,y = 4)
my_nested_list = [[1, 2, 3, 4], [10, 11, 12, 13], [2, 3, 5, 7]]
my_list = my_flattening_function(my_list)
print(my_list)
>> [1, 2, 3, 4, 10, 11, 12, 13, 2, 3, 5, 7]
此列表扁平化问题与其他问题之间的区别在于,列表的数目和列表的长度在开头给出,并且所有列表的长度均相同,并且希望从这些信息中可以进一步优化此列表除了递归蛮力之外,还可以找到。
注意:这是前面提到的“低效”代码,其中列表的长度是变化的,没有给出。我觉得不断检查元素的类型可能会影响代码的运行时间。
# input list
l = [1, 2, [3, 4, [5, 6]], 7, 8, [9, [10]]]
# output list
output = []
# function used for removing nested
# lists in python.
def reemovNestings(l):
for i in l:
if type(i) == list:
reemovNestings(i)
else:
output.append(i)