我基本上是在下面的Start()
方法中定义一组参数。除了request.Continuation
可以具有6
或3
的值以外,大多数参数都是相同的。我的想法是要列出一个将得到值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/