具有列表理解的内联打印

时间:2016-12-30 04:08:47

标签: python printing list-comprehension

只有当对象的布尔属性(数组中的对象)设置为True时,我才需要打印一些东西。我正在尝试:

    print("Points of Interest: " + (" ".join([str(poi.name) for poi in currentRoom.pointsOfInterest] if [poi.found for poi in currentRoom.pointsOfInterest] else 0)))

我在这里遗漏了一些东西,因为str(poi.name)被打印了,尽管对象的bool属性(poi.found)设置为false。

有什么建议吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

[poi.found for poi in currentRoom.pointsOfInterest]创建一个列表。如果其中有任何物体,它将是真实的。这些对象甚至可能是假的 - 只要列表不为空,整个列表仍将评估为真实。您需要使用anyall,具体取决于您希望看到的确切行为:

>>> if [0, 0]: print('y')
...
y
>>> if any([0,0]): print('y')
...
>>> if all([0,0]): print('y')
...
>>> if any([]): print('y')
...
>>> if all([]): print('y')
...
y
>>> if any([0,1]): print('y')
...
y
>>> if all([0,1]): print('y')
...
>>> if any([1,1]): print('y')
...
y
>>> if all([1,1]): print('y')
...
y