列表理解可以分为两个列表吗?

dar*_*oeu 2 python list-comprehension dataframe pandas one-liner

我想我已经明白了单行 for 循环的想法,但现在我遇到了问题。我知道我可以使用以下方式定义数据框列:

df = pd.DataFrame(columns=["columnA"])

list = [0, 1, 2, 3, 4]

df["columnA"] = [i for i in list]
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:是否可以在一行 for 循环中定义 2 列?

我试过这个:

df["columnA"], df["columnB"] = [i, i**2 for i in list]
df["columnA"], df["columnB"] = [[i, i**2] for i in list]
Run Code Online (Sandbox Code Playgroud)

这些都不起作用。我正在使用Python 3.10

Cor*_*ien 6

你必须zip输出:

df['A'], df['B'] = zip(*[(i, i**2) for i in lst])
print(df)

# Output
   A   B
0  0   0
1  1   1
2  2   4
3  3   9
4  4  16
Run Code Online (Sandbox Code Playgroud)

您还可以使用np.array

df[['A', 'B']] = np.array([(i, i**2) for i in lst])
Run Code Online (Sandbox Code Playgroud)