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
Space 单词之间,无逗号,每行 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)
结果会是怪物。
您只需稍微格式化一下即可。用 space 连接项目,并用换行符分隔它们。
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()
可以更轻松地更改句子。
如果您想生成您所描述的实际字符串,您可以通过两次 join
调用来完成
'\n'.join(' '.join(r) for r in b)
内部 join
将每行的元素连接在一起,并用 ' '
分隔它们,然后外部连接将行与它们之间的 '\n'
连接起来。可以直接打印上面的,也可以存到变量
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)
我已经尝试了很多解决方案来解决我的问题,但我还没有找到解决方案。
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
Space 单词之间,无逗号,每行 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)
结果会是怪物。
您只需稍微格式化一下即可。用 space 连接项目,并用换行符分隔它们。
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()
可以更轻松地更改句子。
如果您想生成您所描述的实际字符串,您可以通过两次 join
调用来完成
'\n'.join(' '.join(r) for r in b)
内部 join
将每行的元素连接在一起,并用 ' '
分隔它们,然后外部连接将行与它们之间的 '\n'
连接起来。可以直接打印上面的,也可以存到变量
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)