我先是想到用集合来解决这个问题
def find(nums1,nums2):
def sumlist(nums1,nums2):
nums1,nums2 = set(nums1)\
,set(nums2)
numslist = list(nums1 | nums2)
return numslist
def odevity(numslist):
n = len(numslist)
mid = n // 2
if n % 2 == 0:
median = numslist[mid] + numslist[mid - 1]
median /= 2
return median
else:
median = numslist[mid]
return median
numslist = sumlist(nums1,nums2)
median = odevity(numslist)
if median == 0:
return 0.0
median = float(('%5f'%median))
return median
结果我发现一旦数组里面出现重复的元素会被移出,导致奇偶发生改变,到2055个数据时候过不去了。
我开始重新思考
我想到了列表的extend也有相同的效果,然后在用sort,后面我写的与前面一样,除了归并数组的方式改变了,其余代码不改变。
def fund(nums1,nums2):
def sumlist(nums1,nums2):
nums1.extend(nums2)
nums1.sort()
numslist = nums1
return numslist
def odevity(numslist):
n = len(numslist)
mid = n // 2
if n % 2 == 0:
median = numslist[mid]\
+ numslist[mid - 1]
median = median / 2
return median
else:
median = numslist[mid]
return float(median)
numslist = sumlist(nums1,nums2)
median = odevity(numslist)
median = float(('%.5f'%median))
return median
这个时候新的问题出现了,当我输入[1,2,3]和[4,5,6]
我的输出4.00000
系统的输出4.50000
我百思不得其解,在我经过一阵的调试,发现在偶数的median赋值时改变其类型为float就可以得到正确答案。
这个时候我又开始思考是为什么?
最后发现是版本问题,我使用的是python2.x,当我将python版本提升为3.x就可以不用改变类型,我猜测是官方在升级时对这个进行了改变。
比如python2.x里int类型/任何数返回的依旧是int类型
在python3.x里int类型/任何数返回的是float类型
总结
对python基础不够扎实
然后对python版本变化不够了解
平时应该多看看官方文档
收获
提升了思考问题能力
提升实践能力
‘心流状态’持续时间变得比过去更持久