我基本上是在下面的Start()方法中定义一组参数。除了request.Continuation可以具有63的值以外,大多数参数都是相同的。我的想法是要列出一个将得到值6(在self.continuation中)的符号列表,并说诸如“如果在self.continuation中,值= 6,否则为3”。

我对python来说还很陌生,所以这可能还很遥远,但是我不确定这是否是lambda表达式的好用例。

class BarsRequestSample(CELEnvironment.CELSinkBase):
    def __init__(self):

        self.symbols = ['CLES12Z', 'HOE']
        self.continuation=['ClES12Z', 'CLES6M']

    def Start(self):
        for symbol in self.symbols:
            request.Symbol = symbol
            request.RangeStart = 0
            request.RangeEnd = -60
            request.IntradayPeriod = 5
            request.Continuation = 6
            request.UpdatesEnabled = True
            request.EqualizeCloses = True
            request.SessionsFilter = 31


我知道我能做的:

def Start(self):

    for symbol in self.symbols:
        request.Symbol = symbol
        request.RangeStart = 0
        request.RangeEnd = -60
        request.IntradayPeriod = 5

        #potential attempt
        if symbol in self.continuation:
            request.Continuation = 6
        else:
            request.Continuation = 3

        request.UpdatesEnabled = True
        request.EqualizeCloses = True
        request.SessionsFilter = 31


我的直觉是,可能会有更简洁的方式来做同一件事-感谢您的任何想法!

最佳答案

我将符号列表设置为一组。集包含是O(1)操作,而列表是O(n)。这对于两个要素都没有关系,但这是一个养成的好习惯。

self.continuation = {'ClES12Z', 'CLES6M'}


您可以使用conditional expression将分配压缩为一行:

request.Continuation = 6 if symbol in self.continuation else 3

关于python - 应用条件If语句的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57095028/

10-11 03:36