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

如何修改嵌套For循环输出,匹配fill_values实现指定格式?

修改循环代码实现指定格式输出

问题描述

我有一组用于填充缺失值的数据集:

In [1]: sex_class = ['female','male']
        pclass = [1,2,3]
        fill_values = [34,40,29,18,24,25]

In [2]: for i in pclass:
            for j in sex_class:
                print(i,j)
Out[2]: 1 female
        1 male
        2 female
        2 male
        3 female
        3 male

需要修改代码,让输出呈现为以下指定格式:

1 female 34
1 male   40
2 female 29
2 male   18
3 female 24
3 male   25

解决方案

方法1:使用索引计数器

引入一个索引变量,在每次循环中取出对应fill_values元素,同时用字符串格式化实现文本对齐:

sex_class = ['female','male']
pclass = [1,2,3]
fill_values = [34,40,29,18,24,25]

idx = 0
for i in pclass:
    for j in sex_class:
        # 左对齐第二列,固定宽度6个字符,保证male和female对齐
        print(f"{i} {j:<6} {fill_values[idx]}")
        idx += 1

方法2:先构建配对组合再遍历

先把pclass和sex_class的所有组合与fill_values配对,再循环输出,逻辑更直观:

sex_class = ['female','male']
pclass = [1,2,3]
fill_values = [34,40,29,18,24,25]

# 生成所有(pclass, sex)组合
combinations = []
for cls in pclass:
    for sex in sex_class:
        combinations.append((cls, sex))

# 组合对应的值并输出
for (cls, sex), val in zip(combinations, fill_values):
    print(f"{cls} {sex:<6} {val}")

方法3:用itertools.product简化组合生成

借助itertools.product可以快速生成pclass和sex_class的笛卡尔积,代码更简洁:

from itertools import product

sex_class = ['female','male']
pclass = [1,2,3]
fill_values = [34,40,29,18,24,25]

for (cls, sex), val in zip(product(pclass, sex_class), fill_values):
    print(f"{cls} {sex:<6} {val}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:35:24