Fuj*_*lan 1 python list-comprehension list python-3.x
我有一个嵌套列表与列表和数字混合.
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)
您需要将实例测试放在循环中,以便从嵌套列表中提取元素:
[num for item in nested for num in (item if isinstance(item, list) else (item,))]
Run Code Online (Sandbox Code Playgroud)
演示:
>>> nested = nested = [[1, 2, 3], [4, 5, 6], [7, 8], [9], 10, 11]
>>> [num for item in nested for num in (item if isinstance(item, list) else (item,))]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Run Code Online (Sandbox Code Playgroud)
如果你首先将它表达为一组for循环,它会有所帮助; 你的尝试基本上是这样的:
for item in nested:
_element = num if isinstance(item, list) for num in item else item
result.append(_element)
Run Code Online (Sandbox Code Playgroud)
这不是真正有效的Python.
我上面的列表理解是这样做的:
for item in nested:
_iterable = item if isinstance(item, list) else (item,)
for num in _iterable:
_element = num
result.append(_element)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |