八戒m-y 2024-08-13 14:53 采纳率: 52.6%
浏览 7

列表索引超出范围python

#python中列表索引超出范围

import numpy as np

#给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
#请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列
# 输入数组元素,用逗号隔开,并将输入转换为整数列表
nums1 = list(map(int, input("请输入数组元素,用逗号隔开\n").split(',')))
nums2 = list(map(int, input("请输入数组元素,用逗号隔开\n").split(',')))

# 合并两个列表
#nums3 = nums1 + nums2


def merge(nums1, m, nums2, n):
    # 初始化两个指针,i 指向 nums1 的有效数据末尾(m-1),j 指向 nums2 的末尾(n-1)
    # k 指向 nums1 的末尾(m+n-1),用于存放合并后的数据
    i, j, k = m - 1, n - 1, m + n - 1
    # 当两个数组都还有未处理的数据时,进行比较并填充到 nums1 的末尾
    while i >= 0 and j >= 0:
        if nums1[i] >= nums2[j]:
            nums1[k] = nums1[i]
            i -= 1
        else:
            nums1[k] = nums2[j]
            j -= 1
        k -= 1

        # 如果 nums2 还有剩余数据,直接将其复制到 nums1 的前面部分
    while j >= 0:
        nums1[k] = nums2[j]
        j -= 1
        k -= 1
    # 打印合并后的列表
#print("合并后的列表:", nums3)

# 对列表进行排序并打印排序后的列表
#nums3.sort()  # 使用 sort() 方法原地排序
m=3
n=2
merge(nums1,m,nums2,n)

print("排序后的列表:", nums1)


img

  • 写回答

1条回答 默认 最新

  • 我辈李想 Python领域优质创作者 2024-08-13 17:24
    关注

    nums1只有3个元素,最大索引是2,k值是4,nums1无法通过索引4拿到数据,无法赋值

    评论

报告相同问题?

问题事件

  • 创建了问题 8月13日

悬赏问题

  • ¥20 visual studio中c语言用ODBC链接SQL SERVER
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥500 服务器搭建cisco AnyConnect vpn
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊
  • ¥15 快速扫描算法求解Eikonal方程咨询