weixin_36340831 2016-12-09 10:46 采纳率: 0%
浏览 2211

IndexError: list index out of range

#coding:utf-8 -*-
#! /user/bin/env/python

python vectorsum.py 1000

import sys
import numpy as np
from datetime import datetime
"""input format�� python vectorsum.py n
n: the expected size for the vector"""

def pythonSum(n):
a = range(n)
b = range(n)
c = []
for i in range(n):
a[i] = i ** 2
b[i] = i ** 3
c.append(a[i]+b[i])
return c

def numpysum(n):
a = np.arange(n) ** 2
b = np.arange(n) ** 3
c = a + b
return c

size = int(sys.argv[1])

start = datetime.now()
c = pythonSum(size)
delta = datetime.now() - start
print ("The last 2 elements of the sum", c[-2:])
print ("pythonSum elspaed time in microseconds", delta.microseconds)
start = datetime.now()
c = numpysum(size)
delta = datetime.now() - start
print ("The last 2 elements of the sum", c[-2:])
print ("numpysum elspaed time in microseconds", delta.microseconds)

运行结果:Traceback (most recent call last):
File "D:\workspace\PythonLearn1\src\NumpyLearn__init__.py", line 26, in
size = int(sys.argv[1])
IndexError: list index out of range

我用的是Eclipse下的 python,请问这个越界了,应该在哪里输入 python vectorsum.py n,各位大神,帮忙解决一下吧

  • 写回答

1条回答

  • 苏酒酒 2016-12-09 15:47
    关注

    这个问题一般是索引越界了,这有两种情况,一种是list[index]index超出范围,另一种就是你的list是一个空的 没有一个元素。
    而一般都要事先判断一下,随便返回什么,只要判断跳过会报错的逻辑就好了,就比如c[-2:]那一块,

    而你的问题是第二种,sys.argv[1] 表示取命令行的第一个参数,但是你在调用vectorsum.py的时候没有加任何参数,所以数组当然就越界了,你的n没有取任何值

    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配