2013-04-29 59 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