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
相关产品推荐
相关产品推荐

