我有一个包含9个浮点值的列表,我想取前5个,检查它们是否等于零,然后取最后4个,检查它们是否等于零。如果(前5和后4)都等于零,我想打印[None, None]。如果它们不等于0,那么我要打印2个最小值,每组一个。如果只有前5个值是零,那么我想打印None,然后打印最后4个的最小值,反之亦然。
。
a = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
输出:[None, None]
或
a = [0.0,0.0,0.0,0.0,0.0,3.0567,0.55,7.678,9.678]
输出:[none, 0.55]
def array_process(arr):
f5 = [x for x in arr[:5] if x > 0]
l4 = [x for x in arr[-4:] if x > 0]
return min(f5) if f5 else None, min(l4) if l4 else None
a = [0.0,0.0,0.0,0.0,0.0,3.0567,0.55,7.678,9.678]
print(array_process(a))
输出:(None, 0.55)
这里有一个简单的解决方案来满足您的标准:
def array_process(arr):
first = arr[:5]
second = arr[5:]
if first.count(0.0) == 5 and second.count(0.0) == 4:
return [None, None]
elif first.count(0.0) == 5:
return [None, min(second)]
elif second.count(0.0) == 4:
return [min(first), None]
else:
return [min(first), min(second)]
print(array_process([0.0,0.0,0.0,0.0,0.0,3.0567,0.55,7.678,9.678]))
输出:[None, 0.55]
切片将允许您获得列表的前5个和后4个:
a = [0.0,0.0,0.0,0.0,0.0,3.0567,0.55,7.678,9.678]
first_five = a[:5]
last_four = a[-4:]
然后你可以计算每个min
:
result = [min(first_five), min(last_four)]
最后将0替换为None:
for i in range(2):
if result[i] == 0:
result[i] = None
你可以:
print(result)
得到你的结果