我有一个名为android:imeOptions="actionNext"
的函数,该函数接受另一个函数zone
的返回值,函数HeartRate
然后将返回一个值为{{1}的zone
}和一个特殊键(取决于)是值lands。
dict
函数可以正常工作,但是看起来很重复。有人可以引导我朝正确的方向前进吗?您知道一些方法可以帮助我简化此过程,并且使其不再重复吗?或解决此问题的其他方法,例如格式不同,不是python的新手,我的python'toolbox'很小。谢谢
HeartRate
答案 0 :(得分:0)
我认为您的代码(不包括逻辑和语法错误)很好。这有点重复,但很清楚。您不想混淆代码的实际作用。也就是说,这是使用间隔树的替代方法。我不确定间隔,因为您的代码会跳过注释中指出的一些值。
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>] # first WaitQueueHandler added by Producer
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>]
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>]
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>]
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>]
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>]
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>]
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>]
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>]
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>]
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>]
[<WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>, <WaitQueueHandler (NOTSET)>]
如果您知道from intervaltree import IntervalTree
t = IntervalTree()
t[.85:.89] = 'zone2'
t[.89:.93] = 'zone3'
t[.93:.98] = 'zone4'
t[.98:1.05] = 'zone5'
def zone(p):
# This assumes no missing/overlapping intervals.
z = 'zone1' if p < t.begin() else 'VOZone' if p >= t.end() else t.at(p).pop().data
return {z: p}
tests = [0, .85, .89, .93, .98, 1.05, 1.1]
for p in tests:
print(zone(p))
的边界(在此示例中为0和2),则可以通过添加以下间隔来简化此操作:
HR_percentage
输出:
t[0:.85] = 'zone1'
t[1.05:2] = 'VOZone'
def zone2(p):
return {t.at(p).pop().data: p}
for p in tests:
print(zone2(p))
答案 1 :(得分:0)
除使用的键外,返回值在每种情况下均相同。该部分可以重构。
def zone(HR_percentage):
if HR_percentage < .85:
key = 'zone1'
elif .85 <= HR_percentage < .89:
key = 'zone2'
elif .89 <= HR_percentage < .93:
key = 'zone3'
elif .93 <= HR_percentage < .98:
key = 'zone4'
elif .98 <= HR_percentage < 1.05:
key = 'zone5'
else:
key = 'VOZone'
return {key: HR_percentage}
鉴于您正在检查一个连续范围,并且已按顺序检查了每个子句,则可以将检查简化为
def zone(HR_percentage):
if HR_percentage < .85:
key = 'zone1'
elif HR_percentage < .89: # We know 0.85 <= HR_percentage, no need to check again
key = 'zone2'
elif HR_percentage < .93:
key = 'zone3'
elif HR_percentage < .98:
key = 'zone4'
elif HR_percentage < 1.05:
key = 'zone5'
else:
key = 'VOZone'
通过一些创造性的缩进和换行,我们接下来可以编写
def zone(HR_percentage):
key = ('zone1' if HR_percentage < .85 else
'zone2' if HR_percentage < .89 else
'zone3' if HR_percentage < .93 else
'zone4' if HR_percentage < .98 else
'zone5' if HR_percentage < 1.05 else
'VOZone')
return {key: HR_percentage}
除此之外,您还需要一个单独的数据结构,例如suggested by @hmm。