2013-04-29 96 views
0

我有一個變量列表。有些等於真,有些不等。我想知道只打印「真實」的最簡單方法。它們打印的順序無關緊要,但它們需要在輸出中用空行分隔。只打印真正Python 3.3的變量

例如:

Var1 = "Cat" 
Var2 = "Dog" 
Var3 = "Sheep" 
Var4 = "" 
Var5 = "" 
Var6 = "Horse" 

,我需要以某種方式獲取系統打印:

Cat 

Dog 

Sheep 

Horse 

我想喜歡的事:

print True in [Var1, Var2, Var3, Var4, Var5, Var6] 

但很明顯的是沒有按」因爲它似乎不是正確的用法(我只是猜測)。任何想法將非常感激!

+2

'Var1','Va的r2'等等是一種常見的反模式。使用一個列表。 – 2013-04-29 12:33:01

回答

5

雖然,在你的問題中留言指出,VarX, VarY, ...是一種常見的反模式,你應該寧願使用一個列表,你可以使用:

print('\n'.join(filter(bool, [Var1, Var2, Var3, Var4, Var5, Var6]))) 
+0

'filter'在這裏相當不錯。但是在這段代碼中有一個語法錯誤。 – 2013-04-29 12:37:49

+0

Python 3確實在'print'是一個函數 – icecrime 2013-04-29 12:42:44

+0

感謝您!這讓我離我所需要的地方最近。再次感謝你的幫助。 – Simkill 2013-04-29 12:58:43

2
print ('\n'.join([var for var in [Var1, Var2, Var3, Var4, Var5, Var6] if var])) 
+0

更新......我想現在就來。謝謝你的收穫! – 2013-04-29 12:33:41

+0

@BlaXpirit你使用Python 2或3? – 2013-04-29 12:36:02

3
print([var for var in [Var1, Var2, Var3, Var4, Var5, Var6] if var]) 
4

爲了節省建設串中的存儲器使用filtersep=論據print

items = (var1, var2, var3) # etc... 
print (*filter(None, items), sep='\n') 
+2

不錯的蟒蛇3解決方案 – jamylak 2013-04-29 13:10:26

+0

謝謝,這個信息讓我到我需要與以前的答案一起! – Simkill 2013-04-30 09:59:25