为何我的列表切片无法返回最后6个元素?代码问题求助
问题分析与解决
你的代码问题出在截取合并数组的方式错误:
nums1 + nums2得到的完整数组是[1,2,3,0,0,0,2,5,6]ans[-6:]取的是这个数组的最后6个元素:[0,0,2,5,6],排序后自然缺失了1和3,不符合预期。
你需要的是合并两个数组的所有有效元素(忽略nums1里的占位符0)后排序,或者直接替换nums1的占位符为nums2元素再排序,以下是两种可行方案:
方案一:过滤占位符后合并排序
nums1 = [1,2,3,0,0,0] nums2 = [2,5,6] # 过滤nums1中的0,合并两个数组后排序 ans = sorted([x for x in nums1 if x != 0] + nums2) print(ans) # 输出: [1, 2, 2, 3, 5, 6]
方案二:替换占位符后排序
因为nums1的后3个0刚好是为nums2预留的占位符,直接替换后排序即可:
nums1 = [1,2,3,0,0,0] nums2 = [2,5,6] # 用nums2替换nums1的最后3个占位符 nums1[-len(nums2):] = nums2 ans = sorted(nums1) print(ans) # 输出: [1, 2, 2, 3, 5, 6]
内容的提问来源于stack exchange,提问作者Alex Girard
相关产品推荐
相关产品推荐

