只有当对象的布尔属性(数组中的对象)设置为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。
有什么建议吗?
提前致谢
答案 0 :(得分:2)
[poi.found for poi in currentRoom.pointsOfInterest]
创建一个列表。如果其中有任何物体,它将是真实的。这些对象甚至可能是假的 - 只要列表不为空,整个列表仍将评估为真实。您需要使用any
或all
,具体取决于您希望看到的确切行为:
>>> 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