首页 > 解决方案 > python有没有办法在没有列表的单词上打印出itertools.permutations?

问题描述

因此,每当我在字符串上运行 itertools.permutations 时,结果如下:

输入代码:

import itertools
import pprint

pprint.pprint(list(itertools.permutations("par")))

我的输出是这个数组:

[('p', 'a', 'r'),
 ('p', 'r', 'a'),  
 ('a', 'p', 'r'),  
 ('a', 'r', 'p'),  
 ('r', 'p', 'a'),  
 ('r', 'a', 'p')]  

这是较大字符串的一个大问题。我需要一种将它们打印为正常外观的方法,例如:

par
pra
apr
arp
rpa
rap

或在列表中,例如

par, pra, apr, arp, rpa, rap

我是编程新手,所以如果有些事情看起来很明显,我的错!

标签: pythonitertools

解决方案


使用map

>>> list(map(''.join, itertools.permutations("par")))
['par', 'pra', 'apr', 'arp', 'rpa', 'rap']

或列表理解:

>>> [''.join(l) for l in itertools.permutations("par")]
['par', 'pra', 'apr', 'arp', 'rpa', 'rap']
>>> 

或者正如@ShadowRanger 提到的,你可以做得更好:

for x in map(''.join, itertools.permutations("par")):
    print(x)

输出:

par
pra
apr
arp
rpa
rap

或者还有:

for x, y, z in itertools.permutations("par"):
    print(x + y + z)

推荐阅读