在迭代过程中为.append()元素创建新的列表名称

Die*_*ler 1 python iteration list pandas

我正在尝试添加元素的迭代过程中创建新的list_names。

# input
df = pd.DataFrame({"R1": [8,2,3], "R2": [-21,-24,4], "R3": [-9,46,6]})
Run Code Online (Sandbox Code Playgroud)

输入

# desired Output
list1 = df.values[0].tolist()
print(list1)
list2 = df.values[1].tolist()
print(list2)
list3 = df.values[2].tolist()
print(list3)
Run Code Online (Sandbox Code Playgroud)

期望的输出

# failed attempt
for i in range(3):
    print(f'{"list"}{i}') = df.values[i].tolist()
Run Code Online (Sandbox Code Playgroud)

失败的尝试

Par*_*ngh 5

您可以在整个数据框架上工作而无需迭代。一次访问底层数组并将其转换为列表列表。

import pandas as pd
df = pd.DataFrame({"R1": [8,2,3], "R2": [-21,-24,4], "R3": [-9,46,6]})

#out = df.to_numpy().tolist() for pandas >0.24
out = df.values.tolist()
print(out)
print(out[0])
print(out[1])
print(out[2])
Run Code Online (Sandbox Code Playgroud)

输出:

[[8, -21, -9], [2, -24, 46], [3, 4, 6]]
[8, -21, -9]
[2, -24, 46]
[3, 4, 6]
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以将out变量用作所需的所有单个列表的集合。


如果您想改用字典,也可以如下创建:

out_dict = {f"list{i}":lst for i, lst in enumerate(out, start=1)}
#Output:
{'list1': [8, -21, -9], 'list2': [2, -24, 46], 'list3': [3, 4, 6]}

print(out_dict['list1'])
print(out_dict['list2'])
print(out_dict['list3'])
Run Code Online (Sandbox Code Playgroud)

在列表方法和字典方法之间,您应该能够涵盖您真正需要的所有用例。尝试动态制作可变数量的变量通常是一个坏主意。相关阅读