如何展平包含两项元组和单个项元组的列表中的内部元组

2024-05-18 18:37:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有任何有效的方法将包含两项元组和单个项的元组的列表转换为扁平列表或NumPy数组

list = [((-1, -1), -1), ((-1, -1), 0), ((-1, -1), 1), ((-1, -1), 2), ...]

我想要的结果是:

new_list = [[-1, -1, -1], [-1, -1, 0], [-1, -1, 1], [-1, -1, 2], ...]

到目前为止,我已经尝试使用

new_list = [item for i in list for item in i]

但结果是:

[(-1, -1), -1, (-1, -1), 0, (-1, -1), 1, (-1, -1), 2, ...]

当我试图删除嵌套的元组时,出现了错误

TypeError: 'int' object is not iterable

Tags: 方法innumpy列表newforobject错误
3条回答

您需要保持列表的结构(或多或少)。您实际上是在展平嵌套元素,而不是列表本身。拆包是一种简单的方法

new_lst = [[*x[0], x[1]] for x in lst]

另一种是直接引用:

new_lst = [[x[0][0], x[0][1], x[1]] for x in lst]

由于每个元组的结构似乎都是((a, b), c),因此您可以在元组解包时使用列表理解:

>>> lst = [((-1, -1), -1), ((-1, -1), 0), ((-1, -1), 1), ((-1, -1), 2)]
>>> [[a, b, c] for ((a, b), c) in lst]
[[-1, -1, -1], [-1, -1, 0], [-1, -1, 1], [-1, -1, 2]]

再短一点:

[[*x, y] for x, y in lst]

相关问题 更多 >

    热门问题