You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的列表切片无法返回最后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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:05:18