相关疑难解决方法(0)

如何从列表列表中制作一个平面列表?

我想知道是否有一条快捷方式可以在Python列表中列出一个简单的列表.

我可以在for循环中做到这一点,但也许有一些很酷的"单行"?我用reduce尝试了,但是我收到了一个错误.

l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
reduce(lambda x, y: x.extend(y), l)
Run Code Online (Sandbox Code Playgroud)

错误信息

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
AttributeError: 'NoneType' object has no attribute 'extend'
Run Code Online (Sandbox Code Playgroud)

python list flatten multidimensional-array

2950
推荐指数
29
解决办法
184万
查看次数

编写列表解析以展平嵌套列表

我有一个嵌套列表与列表和数字混合.

nested = [[1, 2, 3], [4, 5, 6], [7, 8], [9], 10, 11]
Run Code Online (Sandbox Code Playgroud)

嵌套列表只包含数字,它们永远不会包含更多列表.

是否可以编写列表推导来从'嵌套'列表中创建新列表,产生以下输出?

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Run Code Online (Sandbox Code Playgroud)

这是我的尝试(代码不起作用)

[num if isinstance(item, list) for num in item else item for item in nested]
Run Code Online (Sandbox Code Playgroud)

python list-comprehension list python-3.x

1
推荐指数
1
解决办法
742
查看次数

我可以使用递归函数和列表推导来展平列表吗?

这仅用于概念的自学习,可能没有实际用途

我的问题是

  1. 我可以只使用递归函数和列表推导来展平未知级别的嵌套列表吗?

  2. 如果1是可能的,我可以只使用list comprehension + lambda函数来达到同样的目的吗?

到目前为止,这一切我都可以得到,但似乎无法正常工作.

l=[1,[2,3],[4,5,[6,7,8,9]]] # assuming unknown level of nesting

def fun_d(x):
    return [fun_d(e) if isinstance(e,list) else e for e in x]

fun_d(l)

Out[25]: [1, [2, 3], [4, 5, [6, 7, 8, 9]]]
Run Code Online (Sandbox Code Playgroud)

python recursion list-comprehension list

-1
推荐指数
1
解决办法
384
查看次数