[英]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.