假設我有任何迭代是否有任何單一功能的打印iterables值
var = "ABCDEF"
我得到這樣
it = itertools.combinations(var,2)
可迭代沒有任何單一功能的打印全部迭代值如
printall(it)
,而不是使用for循環
假設我有任何迭代是否有任何單一功能的打印iterables值
var = "ABCDEF"
我得到這樣
it = itertools.combinations(var,2)
可迭代沒有任何單一功能的打印全部迭代值如
printall(it)
,而不是使用for循環
這個相當取決於你想要什麼,如果你想打印出所有的值,你需要計算他們 - 一個可迭代不保證值計算,直到它們之後所有要求,所以要實現這一目標的最簡單方法是make a list:
print(list(iterable))
這將打印出正常的列表格式中的項目,這可能是合適的。如果你想在一個新行的每個項目,最好的選擇是,正如你提到的,一個簡單的for循環:
for item in iterable:
print(item)
如果您不需要特定格式的數據,而只是需要它(例如,不是全部在一行上),您可能需要檢出the pprint
module。
最後一個選擇,我並不覺得自己真的是最優的,但對於提完整性,有可能在3.x中,其中the print()
function非常靈活:
print(*iterable, sep="\n")
這裏我們unpack the iterable作爲參數print()
,然後使分隔符成爲換行符(而不是通常的空格)。
另外,值得指出的是,一旦迭代器迭代完成,它就會被消耗。 – 2013-02-22 02:00:22
@JoelCornett確實。雖然如果你已經制作了一個列表,那麼你可以重複一遍。 – 2013-02-22 02:04:46
用於打印(* iterable)是勝利者。 – 2015-08-08 00:39:41
您可以使用str.join
方法並將新迭代器的每個元素連接到一個新行上。
print('\n'.join(it))
+1,但值得注意的是,假設元素是字符串。如果不是,則需要[生成器表達式或列表理解](http://www.youtube.com/watch?v=pShL9DCSIUw)。 – 2013-02-22 01:41:25
可以使用的格式,這將使每個元素進行格式化,請你:
>>> print '\n'.join('{:>10}'.format(e) for e in iter([1,2,'1','2',{1:'1'}]))
1
2
1
2
{1: '1'}
每個元素並不需要是一個字符串必然的,但必須有一個__repr__
方法,如果它是不是一個字符串。
然後,您可以輕鬆地編寫你想要的功能:
>>> def printall(it,w): print '\n'.join('{:>{w}}'.format(e,w=w) for e in it)
>>> printall([1,2,'3','4',{5:'6'}],10)
1
2
3
4
{5: '6'}
我使用的名單,但可迭代會做。
可以使用chain()功能從itertools創建VAR數據迭代器,然後就拆開使用*迭代器的操作
>>> from itertools import chain
>>> var = 'ABCDEF'
>>> print(*chain(var))
A B C D E F
>>> print(*chain(var), sep='\n')
A
B
C
D
E
F
如果你只需要遍歷現有的數據,然後再打印出來就可以使用明星運營商*爲此
>>> print(*var)
A B C D E F
>>> print(*var, sep='\n')
A
B
C
D
E
F
爲什麼'for'循環有問題? – 2013-02-22 01:36:55
我不這麼認爲,但我可能是錯的... – xxmbabanexx 2013-02-22 01:37:02
等等......您可以用自定義功能製作自己的模塊並使用酒精進行安裝。 – xxmbabanexx 2013-02-22 01:37:56