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

如何在嵌套循环中使用while循环实现非同位的颜色与数字组合?

问题解决:生成排除同位置配对的颜色-数字组合

问题需求

需要生成颜色列表与数字列表的所有组合,但同位置的颜色和数字不能配对。例如输入colours = ["grey","black","white"]、numbs = [1,2,3]时,需排除grey,1、black,2、white,3这三组,输出剩余的6组。

原代码问题分析

  1. 错误地将数字列表转为字符串:numbs =''.join(map(str, numbs))导致遍历对象变为单个字符,破坏了列表结构,无法通过索引判断位置关系。
  2. 缺少位置判断逻辑:未过滤颜色和数字同索引的配对,输出了不符合要求的组合。
  3. 注释的while循环逻辑混乱,对需求无实际帮助。

修正后的代码

def all_combinations(colours, numbs):
    # 将数字列表元素转为字符串,保留列表结构
    num_strs = list(map(str, numbs))
    # 遍历每个颜色及其对应索引
    for i, colour in enumerate(colours):
        # 遍历每个数字及其对应索引
        for j, numb in enumerate(num_strs):
            # 跳过同位置的颜色-数字配对
            if i != j:
                print(f"{colour}, {numb}")

all_combinations(["grey","black","white"],[1,2,3])

代码说明

  • 使用enumerate同时获取元素与索引,直接通过索引对比判断是否为同位置配对。
  • 保留数字的列表结构,避免转为字符串后丢失索引信息。
  • 通过if i != j过滤不符合要求的组合,逻辑简洁高效。

输出结果

运行代码后会得到期望输出:

grey, 2
grey, 3
black, 1
black, 3
white, 1
white, 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:57:17