python中的分段列表理解

2024-10-01 17:31:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中执行以下操作最简单/最优雅的方法是什么:

def piecewiseProperty(aList):
    result = []
    valueTrue = 50
    valueFalse = 10

    for x in aList:
        if hasProperty(x):
            result.append(valueTrue)
        else
            result.append(valueFalse)

    return result

其中hasProperty是一些具有布尔返回值的函数。在

一种较短(但不透明,可能效率较低)的R-like方法是这样做的

^{pr2}$

另一种更整洁的方法是使用字典查找:

[ {True:50, False:10}[hasProperty(x)] for x in aList ]

是否有一些聪明易读的一行程序或内置函数来实现这一点?这基本上是一个if…else列表的理解。在

此问题的应用: 为了以防万一,我用这个来给网络中的节点分配大小,这样它们就可以用不同的方式绘制了。我想画出前缀为“small_x”大小为10的节点,并绘制大小为50的其他节点。NetworkX和pygraphviz可以通过接受一个大小列表来改变节点的大小,每个节点一个。在


Tags: 方法函数in列表forif节点绘制

热门问题