我已经为我的问题尝试了很多解决方案,但我还没有找到解决方案。
import itertools
a = ['car','boat','plane']
b = list(itertools.permutations(a,))
print(b)
打印时会显示此列表。
[('car', 'boat', 'plane'), ('car', 'plane', 'boat'), ('boat', 'car', 'plane'), ('boat', 'plane', 'car'), ('plane', 'car', 'boat'), ('plane', 'boat', 'car')]
但这不适合我。我需要这样的东西:
car boat plane
car plane boat
boat car plane
boat plane car
plane car boat
plane boat car
单词之间的空格,没有逗号,每行1个。
这只是一个样本,因为我每个都有20个单词的短语,我需要每个短语。
现在,只是一个真实的样本我必须做的事情。
import itertools
'phrase What are you doing to this cat?'
a = ['what','are','you','doing','to','this','cat?']
b = list(itertools.permutations(a,))
print(b)
结果将是一个怪物。
答案 0 :(得分:1)
如果你想制作你所描述的实际字符串,可以通过两次join
电话来实现
'\n'.join(' '.join(r) for r in b)
内部join
将每行的元素连接起来,' '
将它们分开,外部连接然后将行与它们之间的'\n'
连接起来。您可以直接打印上述内容或将其存储在变量
答案 1 :(得分:0)
你只需要格式化一下。使用空格加入项目,并用换行符分隔。
print(*(' '.join(item) for item in itertools.permutations(a,)), sep='\n')
可替换地:
for item in itertools.permutations(a,):
print(' '.join(item))
答案 2 :(得分:0)
只需解压缩itertools.permutations(a,)
和for
循环返回的元组:
import itertools
a = 'what are you doing to this cat?'.split()
for permutation in itertools.permutations(a,):
print(*permutation)
在短语上使用.split()
可以更轻松地更改句子。
答案 3 :(得分:0)
pprint.pprint
通常对检查数据很有用。在这种情况下,它并没有准确地给出你想要的形式,但它确实提供了一种有用的形式。
代码:
import itertools
from pprint import pprint
a = ['car','boat','plane']
b = list(itertools.permutations(a,))
pprint(b)
结果:
[('car', 'boat', 'plane'),
('car', 'plane', 'boat'),
('boat', 'car', 'plane'),
('boat', 'plane', 'car'),
('plane', 'car', 'boat'),
('plane', 'boat', 'car')]
答案 4 :(得分:0)
您只需要与'进行字符串连接,'对于来自itertools.permutations的每条记录的每个元素,然后将每条记录与' \ n'一起加入。这是一个生成器表达式:
import itertools
a = ['car','boat','plane']
b = itertools.permutations(a)
s = '\n'.join((','.join(permutation) for permutation in b))
print(s)