如何不使用for循环直接查看Python itertools.permutations的所有排列?
如何直接查看itertools.permutations的所有排列(无需for循环)
嘿,作为Python新手遇到这个问题太正常了——毕竟itertools.permutations返回的是一个迭代器对象,而不是直接可查看的列表,所以直接打印只会输出对象的内存地址,而不是具体的排列内容。
两种无需for循环的解决方法:
转换为列表
迭代器可以直接用list()函数转换成列表,这样就能一次性看到所有排列了:import itertools as it obj = it.permutations(range(4)) print(list(obj))输出会是一个包含所有排列元组的列表,比如
[(0,1,2,3), (0,1,3,2), ...]。用print的解包特性
你可以用*操作符把迭代器的内容直接解包到print()里,再指定分隔符换行,这样也能直接打印所有排列:import itertools as it obj = it.permutations(range(4)) print(*obj, sep='\n')这样输出效果和你用for循环打印的完全一样,但不需要写循环。
为什么你之前试的方法没用?
itertools里的很多迭代器是用C语言实现的轻量级对象,它们没有__dict__属性,所以调用__dict__会报错;而vars()函数本质是获取对象的__dict__,自然也会失效,甚至触发类型错误——这都是因为这类迭代器的设计就是为了节省内存,不会提前存储所有元素,而是按需生成。
内容的提问来源于stack exchange,提问作者NoviceProg
相关产品推荐
相关产品推荐

