Python中permutations排列结果无法按行输出的问题求助
解决Python排列输出格式问题
问题分析
你尝试用itertools.permutations生成['mac', 'hi', 'ne']的所有排列,并希望每个拼接后的字符串单独一行显示,但之前的两种写法都没达到预期:
- 第一种写法将每个排列的元素用换行符拼接成单个字符串,打印集合时会显示包含转义
\n的完整字符串,而非实际换行。 - 第二种写法虽然正确拼接了每个排列,但直接打印集合时,
sep='\n'无法生效——因为sep是用来分隔多个print参数的,而你只传入了一个集合对象,导致集合以带大括号的格式输出。
正确实现代码
以下两种方法都能得到你期望的输出:
方法1:循环逐个打印
from itertools import permutations perms = [''.join(p) for p in permutations(['mac', 'hi', 'ne'])] for perm in perms: print(perm)
方法2:用换行符拼接后一次性打印
from itertools import permutations perms = [''.join(p) for p in permutations(['mac', 'hi', 'ne'])] print('\n'.join(perms))
输出结果
两种方法都会输出:
macnehi machine himacne hinemac nemachi nehimac
原理说明
- 方法1:通过循环遍历每个拼接好的字符串,每次调用
print时,函数默认会在字符串末尾添加换行符,从而实现每行一个排列。 - 方法2:将所有拼接后的字符串用
'\n'连接成一个完整字符串,打印时换行符会被解析为实际的换行,最终每个排列单独占一行。
内容的提问来源于stack exchange,提问作者John Goofy
相关产品推荐
相关产品推荐

