如何在Python中创建多个(但各自独立的)空列表?

2024-06-01 02:07:22 发布

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

我编写了一个脚本,其中一个脚本生成了一堆空列表,并应用了一个具有以下结构的代码:

A,B,C,D=[],[],[],[]

产生输出:

A=[]
B=[]
C=[]
D=[]

现在的情况是,每次使用不同的数据集作为输入时,我都必须手动修改字母。我想把它自动化。 我想过这么做:

FieldList=[A,B,C,D]
bracket=[]
[[0]for field in FieldList]
for field in FieldList:
    bracket=bracket+["[]"]
FieldList=bracket                  

在这里,我试图复制“A,B,C,D=[],[],[],[],[]”,但显然这不是它的工作原理。

我也试过:

FieldList=[A,B,C,D]
bracket=[]
[[0]for field in FieldList]
for field in FieldList:
    field=[]

但最后它只生成一个列表调用“field”。

#

所以,这就是我需要的名单。我将从csv中读取信息,并将从每行提取的数据添加到列表中。如果生成一个“列表列表”,我还可以单独调用每个列表来添加内容吗?

A,B,C,D=[],[],[],[]
with open(csvPath+TheFile, 'rb') as csvfile:    #Open the csv table
    r = csv.reader(csvfile, delimiter=';')      #Create an iterator with all the rows of the csv file, indicating the delimiter between columns
    for i,row in enumerate(r):                  #For each row in the csv
        if i > 0:                               #Skip header 
            A.append(float(row[0]))             #Extract the information and append it to each corresponding list
            B.append(float(row[1]))
            C.append(format(row[2]))
            D.append(format(row[3]))

Tags: csvthe数据csvfilein脚本field列表
3条回答

你太复杂了。只需使用列表或字典:

fields = {key: [] for key in 'ABCD'}

然后根据需要引用fields['A']等,或者循环结构以依次处理每个。

根据您的使用示例,您实际上需要的是zip()

对于本例,请注意csv.reader()基本上将文件分解为以下格式的数据:

[
    ["a1", "b1", "c1", "d1"],
    ["a2", "b2", "c2", "d2"],
    ...,
    ["an", "bn", "cn", "dn"]
]

例如:

table = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    ]

#How to transpose the data into columns??? Easy!

columns = zip(*table)

现在,您有一个变量columns,其形式为:

columns = [
    [1, 5, 9],
    [2, 6, 10],
    [3, 7, 11],
    [4, 8, 12]
]

好的,我们将其应用到csv文件:

with open("mycsv.csv", "rb") as infile:
    reader = csv.reader(infile, delimiter=";")
    next(reader, None) #skip the header
    columns = zip(*reader)

就这样!

注意:对于这个例子,我们假设"mycsv.csv"在每行中有正确的列数。您可能需要执行检查以确保所有行都已“填充”。

dict((k, []) for k in ['A','B','C','D'])

相关问题 更多 >