[英]Python how to print attributes for itertools.permutations
我是Python的新手,正在尝试itertools
:
import itertools as it
obj = it.permutations(range(4))
print(obj)
for perm in obj:
print( perm )
我的问题:如何在不使用for
循环的情况下直接查看/打印obj
所有排列?
我尝试过的事情:我尝试按照此SO链接中的建议使用__dict__
和vars
,但两者都不起作用(该对象似乎不存在前者,而后者生成的'TypeError:'itertools.permutations'对象不可调用')。
如果我的问题有点笨拙,请原谅-这个属性问题看起来很复杂,用SO链接编写的大部分内容都扑朔迷离。
只需将obj
转换为list
:
print(list(obj))
这将为您提供以下输出:
[(0, 1, 2, 3), (0, 1, 3, 2), (0, 2, 1, 3), (0, 2, 3, 1), (0, 3, 1, 2), (0, 3, 2, 1), (1, 0, 2, 3), (1, 0, 3, 2), (1, 2, 0, 3), (1, 2, 3, 0), (1, 3, 0, 2), (1, 3, 2, 0), (2, 0, 1, 3), (2, 0, 3, 1), (2, 1, 0, 3), (2, 1, 3, 0), (2, 3, 0, 1), (2, 3, 1, 0), (3, 0, 1, 2), (3, 0, 2, 1), (3, 1, 0, 2), (3, 1, 2, 0), (3, 2, 0, 1), (3, 2, 1, 0)]
那是您问题的直接答案。 要弄清楚的另一件好事是您是否真的需要您所要的东西。
您会看到, permutations
返回生成器是有原因的。 如果您不熟悉这种模式,强烈建议您阅读一下。 长话短说,除非您确实需要将其作为list
(例如,您想直接通过索引访问项目),否则通常不需要将此类内容投射到list
。 在只需要打印排列的情况下,使用for
循环绝对没有错。
这是一种单行打印每行一个排列的方法:
print('\n'.join(str(permutation) for permutation in obj))
但是同样,您已经在使用简单的for
循环就可以了。 请记住, 简单胜于复杂 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.