You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

itertools.permutations导出CSV异常:仅获取单个排列数据

问题原因及解决方法

问题根源

你代码里的itertools.permutations返回的是迭代器,迭代器只能被遍历一次。而且循环结束后,eachpermutation变量仅保留了最后一次循环的4元组,生成DataFrame时会把这个元组的每个元素拆成单独的行,自然只导出了最后一组排列数据。

正确解决方法

方法1:直接传入迭代器(高效省内存)

无需提前循环打印,直接把排列迭代器传给pd.DataFrame(),它会自动处理所有排列,每个排列对应一行:

import itertools
import pandas as pd

x = range(69,89)
# 生成排列迭代器
array = itertools.permutations(x, 4)
# 用迭代器创建DataFrame,每个排列作为一行
df = pd.DataFrame(array)
# 导出CSV,index=False避免生成多余的索引列
df.to_csv("permutations.csv", index=False)

方法2:转成列表再处理(直观易调试)

如果需要先查看排列内容,可以先把迭代器转为列表,再创建DataFrame:

import itertools
import pandas as pd

x = range(69,89)
# 把迭代器转为列表,保存所有排列
permutations_list = list(itertools.permutations(x, 4))
# 打印查看排列(可选操作)
for p in permutations_list:
    print(p)
# 用列表创建DataFrame
df = pd.DataFrame(permutations_list)
df.to_csv("permutations.csv", index=False)

补充说明

  • 20个数取4个的排列总共有20×19×18×17=116280行,导出的CSV会完整包含所有数据。
  • 导出时添加index=False可以避免CSV中多出一列默认序号,按需选择即可。

内容的提问来源于stack exchange,提问作者topo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:10:11