选择嵌套列表值 Python

Selecting nested list values Python

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

A B [C1, C2, C3]
* * [*1, *2, *3]
* * [*1, *2, *3]

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

A B C1
* * *1
* * *1

A B C2
* * *2
* * *2

A B C3
* * *3
* * *3

目前我运行下面的代码来创建新的tables:

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[:])

哪个 运行 没问题,但我想知道是否有一种方法可以构建 table,这样我就可以在没有此代码块的情况下调用值来分隔它们

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

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)]

如果您需要做涉及所有三个数据集的任何其他事情,将它们放在列表中可能比在三个命名变量中更容易,但如果您确实需要提取 dataset1dataset2 , 和 dataset3 单独来说,就是:

[dataset1, dataset2, dataset3] = datasets