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

Python排列生成代码:禁用join时如何正确添加分隔逗号?

问题描述

输入字符串:Julia Lucas Mia
预期输出:

Julia, Lucas, Mia
Julia, Mia, Lucas
Lucas, Julia, Mia
Lucas, Mia, Julia
Mia, Julia, Lucas
Mia, Lucas, Julia

当前实际输出:

JuliaLucasMia
JuliaMiaLucas
LucasJuliaMia
LucasMiaJulia
MiaJuliaLucas
MiaLucasJulia

以下是当前代码:

def all_permutations(permList, nameList):
    def createPermutationsList(nameList):
        x = len(nameList)
        if x == 0:
            return [] 
        if x == 1:
            return [nameList]  
        permList = []
        
        for i in range(x):
            first = nameList[i]
            remaining = nameList[:i] + nameList[i+1:]
            for perm in createPermutationsList(remaining):
                permList.append([first] + perm)
        return permList

    permList = createPermutationsList(nameList)
    for perm in permList:
        for val in perm:
            print(val, end = '')
        print()

if __name__ == "__main__":
    nameList = input().split(' ')
    permList = []
    all_permutations(permList, nameList)

要求:不能使用join方法,需手动添加逗号分隔符。

解决方案

问题出在打印排列的循环部分,当前代码直接将元素无间隔拼接输出。只需修改打印逻辑,在非最后一个元素后添加, 即可。

修改后的代码:

def all_permutations(permList, nameList):
    def createPermutationsList(nameList):
        x = len(nameList)
        if x == 0:
            return [] 
        if x == 1:
            return [nameList]  
        permList = []
        
        for i in range(x):
            first = nameList[i]
            remaining = nameList[:i] + nameList[i+1:]
            for perm in createPermutationsList(remaining):
                permList.append([first] + perm)
        return permList

    permList = createPermutationsList(nameList)
    for perm in permList:
        # 遍历排列中的每个元素,处理分隔符
        for idx, val in enumerate(perm):
            if idx == 0:
                # 第一个元素直接输出
                print(val, end='')
            else:
                # 后续元素前添加逗号和空格
                print(', ' + val, end='')
        print()

if __name__ == "__main__":
    nameList = input().split(' ')
    permList = []
    all_permutations(permList, nameList)

关键修改说明

  • 使用enumerate获取每个元素的索引,判断是否为第一个元素:
    • 第一个元素直接打印,不加分隔符;
    • 非第一个元素,先打印, 再打印元素。
  • 也可以不使用enumerate,通过判断元素是否为排列的最后一个来实现:
for perm in permList:
    perm_len = len(perm)
    for i in range(perm_len):
        print(perm[i], end='')
        if i != perm_len - 1:
            print(', ', end='')
    print()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:20:40