首页 > 解决方案 > 选择嵌套列表值Python

问题描述

我正在尝试这样使用嵌套列表:

一种 [C1、C2、C3]
* * [*1、*2、*3]
* * [*1、*2、*3]

其中一个数据表是用列表创建的,然后一个特定的列有一个列表作为它的单元格值。我希望能够以这种格式存储此表,但请求数据以便仅将这些单元格的特定索引调用到新表,如下所示:

一种 C1
* * *1
* * *1

一种 C2
* * *2
* * *2

一种 C3
* * *3
* * *3

目前我运行以下代码来创建新表:

dataset1 = []
dataset2 = []
dataset3 = []
for row in self.data:
    datarow1 = []
    datarow2 = []
    datarow3 = []
    for col in row:
        if len(col) > 1 and isinstance(col, str) is False:
            datarow1.append(col[0])
            datarow2.append(col[1])
            datarow3.append(col[2])
        else:
            datarow1.append(col)
            datarow2.append(col)
            datarow3.append(col)
    dataset1.append(datarow1[:])
    dataset2.append(datarow2[:])
    dataset3.append(datarow3[:])

哪个运行良好,但我想知道是否有一种方法可以构建表,以便我可以在没有此代码块的情况下调用值来分隔它们

标签: pythonnested-lists

解决方案


您可以通过简单的理解构建三个数据集,而不是构建中间列表并附加它们:

datasets = [[[
    col[i] if len(col) and not isinstance(col, str) else col 
    for col in row
] for row in data] for i in range(3)]

如果您需要执行涉及所有三个数据集的任何其他操作,将它们放在一个列表中可能比放在三个命名变量中更容易,但如果您确实需要单独提取dataset1dataset2dataset3,那很简单:

[dataset1, dataset2, dataset3] = datasets

推荐阅读