<p>在python中执行以下操作最简单/最优雅的方法是什么:</p>
<pre><code>def piecewiseProperty(aList):
result = []
valueTrue = 50
valueFalse = 10
for x in aList:
if hasProperty(x):
result.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(valueTrue)
else
result.append(valueFalse)
return result
</code></pre>
<p>其中<code>hasProperty</code>是一些具有布尔返回值的函数。在</p>
<p>一种较短(但不透明,可能效率较低)的R-like方法是这样做的</p>
^{pr2}$
<p>另一种更整洁的方法是使用字典查找:</p>
<pre><code>[ {True:50, False:10}[hasProperty(x)] for x in aList ]
</code></pre>
<p>是否有一些聪明易读的一行程序或内置函数来实现这一点?这基本上是一个if…else列表的理解。在</p>
<p><strong>此问题的应用:</strong>
为了以防万一,我用这个来给网络中的节点分配大小,这样它们就可以用不同的方式绘制了。我想画出前缀为“small_x”大小为10的节点,并绘制大小为50的其他节点。NetworkX和pygraphviz可以通过接受一个大小列表来改变节点的大小,每个节点一个。在</p>