因此,该函数可以正常工作,但列表中min2(第二个最小值)的输出不正确。我似乎找不到解决办法。 Python 3.8.6
def max2min2(list1):
max1=list1[0]
min1=list1[0]
max2=None
min2=None
for item in list1:
if item>max1:
max2=max1
max1=item
elif max2==None or max2<item:
max2=item
if item<min1:
min2=min1
min1=item
elif min2==None or min2>item:
min2=item
return max2,min2
list1 = [1,2,3]
max2,min2=max2min2(list1)
print(min2,max2) # 1 2
对于[1,2,3]
的简单输入列表,maxmin2
的输出是(1,2)
,尽管预期的输出是(2,2)
一个简单易读的解决方案是首先对列表进行排序,然后直接索引所需的值。我添加了一个
unique
参数,该参数指定是查看数值(最直观的)还是在列表中保留重复值(因此[1,2,2]
中第二高的数值是2
)没有先排序的更详细的方法:
现在,若这不需要进行速度优化,简单的方法就是获取一组数字,对它们进行排序,然后从每一端获取第二个元素:
然后
如果需要,添加一些异常和特殊情况处理
相关问题 更多 >
编程相关推荐