将复杂列表隐藏到平面列表

我有一长串由 numpy 数组和整数组成的复杂列表,下面是一个示例:

[array([[2218.67288865]]), array([[1736.90215229]]), array([[1255.13141592]]), array([[773.36067956]]), array([[291.58994319]]), 0, 0, 0, 0, 0, 0, 0, 0, 0]

我想将其转换为常规列表:

[2218.67288865, 1736.90215229, 1255.13141592, 773.36067956, 291.58994319, 0, 0, 0, 0, 0, 0, 0, 0, 0]

我怎样才能有效地做到这一点?


慕莱坞森
浏览 151回答 3
3回答

函数式编程

这里最简单的似乎也是最快的:x = [array([[2218.67288865]]), array([[1736.90215229]]), array([[1255.13141592]]), array([[773.36067956]]), array([[291.58994319]]), 0, 0, 0, 0, 0, 0, 0, 0, 0][y if y.__class__==int else y.item(0) for y in x]# [2218.67288865, 1736.90215229, 1255.13141592, 773.36067956, 291.58994319, 0, 0, 0, 0, 0, 0, 0, 0, 0]timeit(lambda:[y if y.__class__==int else y.item(0) for y in x])# 2.198630048893392

宝慕林4294392

list(itertools.from_iterable(itertools.from_iterable(...)))itertools.from_iterable(...)应该适用于删除 2 级嵌套:只需根据需要添加或删除副本。

牛魔王的故事

您可以使用生成器来展平嵌套列表:def convert(obj):    try:        for item in obj:            yield from convert(item)    except TypeError:        yield objresult = list(convert(data))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python