我是Python新手,正在试用itertools。
import itertools as it
obj = it.permutations(range(4))
print(obj)
for perm in obj:
print( perm )如何直接查看/打印obj for 中的所有排列,而无需使用for循环?
我尝试过的:,我尝试使用__dict__和vars,就像在这个所以链接中建议的那样,但两者都不起作用(前者似乎不存在于对象,而后者生成'TypeError:'itertools.permutations‘对象不可调用’)。
请原谅,如果我的问题相当幼稚-这个属性问题看起来很复杂,而且大部分用所以链接写的东西都飞到我头上了。
发布于 2018-05-11 09:54:03
把你的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循环也很好。记住,简单胜于复杂。
https://stackoverflow.com/questions/50289564
复制相似问题