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

使用itertools生成组合:多文件写入及换行空格问题求助

解决方案

修改后的完整代码

import itertools

# 避免使用Python内置关键字list作为变量名
names = ['Mark', 'Jones', 'Albert', 'Mary', 'Bob']
combs = itertools.combinations_with_replacement(names, 5)

for index, item in enumerate(combs):
    # 计算当前文件编号:每10个组合写入一个文件
    file_num = (index // 10) + 1
    # 将组合元素用空格拼接并添加换行符
    line = ' '.join(item) + '\n'
    print(line.strip())  # 打印时去掉末尾换行符,保持整洁
    # 打开对应编号的文件,追加写入
    with open(f'output{file_num}.txt', 'a', encoding='utf-8') as f:
        f.write(line)

问题1:输出格式修正

  • 原代码用f.writelines(item)会直接把元组里的字符串无间隔拼接,导致单词连在一起且无换行。
  • 解决方式:用' '.join(item)把组合内的单词用空格分隔,再加'\n'实现每行一个组合,最后用f.write()写入整行内容。

问题2:每10个组合写入独立文件

  • 通过enumerate(combs)获取每个组合的索引(从0开始),用(index // 10) + 1计算对应文件编号:索引0-9对应output1.txt,10-19对应output2.txt,以此类推。
  • 每次迭代根据计算出的file_num打开对应文件,追加写入当前组合内容。

额外优化

  • 把变量名list改为names,避免和Python内置的list类型冲突,提升代码可读性。
  • 打开文件时指定encoding='utf-8',避免不同环境下的编码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:07:37