繁体   English   中英

Python 3.4.3-如何保存可用的itertools.permutations列表?

[英]Python 3.4.3 - How to save a itertools.permutations list usable?

我已经尝试了许多解决问题的方法,但是还没有找到解决方法。

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)

结果将是一个怪物。

如果您想生成您描述的实际字符串,则可以通过两个join调用来完成

'\n'.join(' '.join(r) for r in b)

join符连接每行的元素与' '将它们分离时,外部联接然后串接与行'\\n'在它们之间。 您可以直接打印以上内容或将其存储在变量中

您只需要格式化一下即可。 用空格将各项连接起来,并用换行符将其分开。

print(*(' '.join(item) for item in itertools.permutations(a,)), sep='\n')

或者:

for item in itertools.permutations(a,):
    print(' '.join(item))

只需解压缩itertools.permutations(a,)for循环返回的元组即可:

import itertools
a = 'what are you doing to this cat?'.split()
for permutation in itertools.permutations(a,):
    print(*permutation)

在短语上使用.split()将使更改句子更容易。

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')]

您只需要对itertools.permutations中每个记录的每个元素用','进行字符串联接,然后将每个记录与'\\ n'联接在一起。 这是一个生成器表达式:

import itertools

a = ['car','boat','plane']
b = itertools.permutations(a)
s = '\n'.join((','.join(permutation) for permutation in b))
print(s)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM