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

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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘