首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python如何打印itertools.permutations属性

Python如何打印itertools.permutations属性
EN

Stack Overflow用户
提问于 2018-05-11 09:48:01
回答 1查看 811关注 0票数 1

我是Python新手,正在试用itertools

代码语言:javascript
复制
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‘对象不可调用’)。

请原谅,如果我的问题相当幼稚-这个属性问题看起来很复杂,而且大部分用所以链接写的东西都飞到我头上了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-11 09:54:03

把你的obj转换成一个list

代码语言:javascript
复制
print(list(obj))

这将为您提供以下输出:

代码语言:javascript
复制
[(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循环绝对没有问题。

下面是一行,用于打印一行排列:

代码语言:javascript
复制
print('\n'.join(str(permutation) for permutation in obj))

但是,您已经使用的简单的for循环也很好。记住,简单胜于复杂

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50289564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档