我对list
有疑问。我的列表需要在中点附近,最小值为1,并且在中点附近需要6个整数步长(+/-),步长为1.列表中将有7位数(中点+6步)。 / p>
例如,if mid = 10
,然后是list = [7,8,9,**10**,11,12,13]
。 10以上3步,10以下3步。
但是if mid = 3
,数字不能均匀地分布在中点上方和下方3个步骤,因为最小值为1.确保列表中的7个项目,3个以上的4个步骤以及3个以下的2个步骤。因此,[1,2,**3**,4,5,6,7]
。如果mid=2
,则高于2的5步和低于2的1步。列表仍为[1,**2**,3,4,5,6,7]
这是我的代码:
def gain_range(mid):
gainLower_list = list(range(1, mid)) #items under the midpoint
gainUpper_list = list(range(mid, n)) #items above the midpoint, hence I can combine the two lists later
if mid >= 4:
n = mid + 3
elif mid >= 3:
n = mid + 4
elif mid >= 2:
n = mid + 5
elif mid >= 1:
n = mid + 6
gain_range(3)
但是此代码会出错:
UnboundLocalError:局部变量' n'在分配前引用
我该如何解决这个问题?是否有更优雅的方法来创建具有固定步骤的列表,而不是固定限制?
答案 0 :(得分:1)
唯一需要的决定是起始值必须> = 1,所以首先计算,然后从var slideToAdd = '<div><img src="http://placehold.it/150x150"></div>';
if(dataOffline.logo !== null){
slideToAdd = '<div class="iimg"><img src="' + dataOffline.logo + '"></div>';
}
var offline = $('.offline');
if(offline.hasClass('slick-initialized')){
offline.slick('slickAdd',slideToAdd);
} else {
offline.append(slideToAdd);
offline.slick();
}
返回list
:
<强>代码:强>
range
测试代码:
def gain_range(mid):
start = max(1, mid - 3)
return list(range(start, start+7))
<强>结果:强>
print(gain_range(3))
print(gain_range(4))
print(gain_range(5))
答案 1 :(得分:0)
这里只是解决错误:在声明代码之前,在代码中使用变量n
。
def gain_range(mid):
gainLower_list = list(range(1, mid))
gainUpper_list = list(range(mid, n)) # use n here but is hasnt been declared and assigned a value
if mid >= 4:
n = mid + 3
elif mid >= 3:
n = mid + 4
elif mid >= 2:
n = mid + 5
elif mid >= 1:
n = mid + 6
在此之前,您需要为n
分配一个值...
然而,如果你只想要6个均匀分布的连续数字mid
至少为1,那么我上面的答案(Steven Rausch)应该可以做到这一点