python中的out of loop_Python:在/ for循环中列出索引超出范围(Python: List index out of range inside while/for loop)...

Python:在/ for循环中列出索引超出范围(Python: List index out of range inside while/for loop)

我想做一个Tribonacci序列。 (每个新项目都是该列表中前三项的总和。)但是每当我使用while / for循环时,它都会显示列表索引超出范围错误。 谁能弄清楚这段代码有什么问题?

def tribonacci(signature, n):

count = 0

newlist = []

while (len(newlist)<=n):

newitem = signature[count]+signature[count+1]+signature[count+2]

newlist.append(newitem)

count = count+1

print signature + newlist

tribonacci([1,1,1], 5)

在上面的代码中,我的预期输出是[1,1,1,3,5,9,17,31]

Traceback (most recent call last):

File "C:\Users\Vasanth\Desktop\sample.py", line 9, in

tribonacci([1,1,1], 5)

File "C:\Users\Vasanth\Desktop\sample.py", line 5, in tribonacci

newitem = signature[count]+signature[count+1]+signature[count+2]

IndexError: list index out of range

I want to make a Tribonacci sequence. (Every new item is a summation of previous three items from that list.) But it shows list index out of range error whenever I use a while/for loop. Can anybody figure out what is wrong with this code?

def tribonacci(signature, n):

count = 0

newlist = []

while (len(newlist)<=n):

newitem = signature[count]+signature[count+1]+signature[count+2]

newlist.append(newitem)

count = count+1

print signature + newlist

tribonacci([1,1,1], 5)

In this above code, my expected output is [1,1,1,3,5,9,17,31]

Traceback (most recent call last):

File "C:\Users\Vasanth\Desktop\sample.py", line 9, in

tribonacci([1,1,1], 5)

File "C:\Users\Vasanth\Desktop\sample.py", line 5, in tribonacci

newitem = signature[count]+signature[count+1]+signature[count+2]

IndexError: list index out of range

原文:https://stackoverflow.com/questions/48061280

2019-11-28 14:06

满意答案

让我们把它减少为MCVE:

signature = [1, 1, 1]

count = 0

while True:

newitem = signature[count] + signature[count+1] + signature[count+2]

count = count+1

在第一次迭代中, count为0因此“问题”行将有效:

newitem = signature[0] + signature[1] + signature[2]

由于signature是一个3项目列表,这是好的。 现在在第二次迭代中, count为1因此该行将有效地变为:

newitem = signature[1] + signature[2] + signature[3]

由于signature只有3个项目,因此没有signature[3]对象 - 您的索引是OutOfRange。

Let's reduce this to a MCVE:

signature = [1, 1, 1]

count = 0

while True:

newitem = signature[count] + signature[count+1] + signature[count+2]

count = count+1

On the first iteration, count is 0 so the "problem" line will effectiveley be:

newitem = signature[0] + signature[1] + signature[2]

since signature is a 3 items list, this is ok. Now on the second iteration, count is 1 so this line will effectively become:

newitem = signature[1] + signature[2] + signature[3]

Since signature is only 3 items long, there's no signature[3] object - your Index is OutOfRange.

2018-01-02

相关问答

问题在于您在此行中初始化new_list的方式: new_list = list(list_init)

你的list_init设置为'test' ,所以当你创建new_list ,它看起来像 ['t', 'e', 's', 't']

然后,如果base_list的长度> 4,则您尝试在索引5处将元素分配给new_list ,并获取IndexError 。 您应该像这样创建new_list : new_list = [None] * len(base_list)

这样,您可以确保new_lis...

让我们把它减少为MCVE: signature = [1, 1, 1]

count = 0

while True:

newitem = signature[count] + signature[count+1] + signature[count+2]

count = count+1

在第一次迭代中, count为0因此“问题”行将有效: newitem = signature[0] + signature[1] + signature[2]

由于signature是一...

这是你的问题: 你有一个for循环,它正在从list_删除数字。 它删除了很多数字, list_是长度为2,然后list_[2]失败并引发异常。 它删除这么多数字的原因是你正在计算x % 1 == 0 ,对于x的任何值都是如此。 由于您从列表中的第2位开始,因此您将删除该位置之后的所有内容。 我不确定你到底在做什么,但这将是一个缓慢的做法,无论它是什么。 这看起来有点像筛选素数...你可能想要谷歌搜索“Python查找素数”或其他东西。 Here is your problem: You have...

问题是List_A只有一个值。 在这里,您试图更改列表中没有索引1和2的值。 所以你得到错误。 在append List_A声明为[]后使用append for i in range(3):

List_A.append(List_B[i][2])

这可以在单个列表中完成 List_A = [i[2] for i in List_B]

发布edit- 在第一次循环之后立即进行初始化 for i in range(5):

List_A = [] ...

看着你的代码,并没有试图做得更好,我发现在letterExists增加后缺少了一个break 。 这是固定的代码: aList = ["B" , "S" , "N" , "O" , "E" , "U" , "T" ]

userInput = "TOE"

userInputList = list(userInput)

letterExists = 0

while (letterExists < len(userInput)):

for i in aList:

if (i =...

您不应该索引到一个空列表。 您应该在列表本身上调用append 。 改变这个: baseList[x][y].append(values[count])

为此: baseList[x].append(values[count])

结果: [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]]

看它在线工作: ideone You shouldn't index into an empty list. You should call append on t...

您正试图在空列表中处理索引: >>> lst = []

>>> lst[0]

Traceback (most recent call last):

File "", line 1, in

IndexError: list index out of range

>>> lst[0] = 1

Traceback (most recent call last):

File "", line 1, in

IndexError: lis...

如何改变: for i in range(len(raw_list)):

成: for i in range(len(raw_list)-1):

How about changing: for i in range(len(raw_list)):

into: for i in range(len(raw_list)-1):

我看了一下,表中的第一行实际上是一个标题,所以在第一个tr有一些th ,这应该有效: >>> mytr = soup.findAll('table')[9].findAll('tr')

>>> for i,row in enumerate(mytr):

... if i:

... print i,row.findAll('td')[2]

与大多数html解析一样,考虑更优雅的解决方案,如xml和xpath,如: >>> from lxml import html

>>> ...

您可以通过以下两种方式之一实现此目的: 1. itertools.cycle c = itertools.cycle(options)

for i in range(anyNumber):

message = Text(Point(x,y), next(c))

message.draw(win)

y = y + 30

模数 for i in range(anyNumber):

message = Text(Point(x,y), options[i%len(opt...

相关文章

列表就像java里的collection,所具有的特性也要比元组更多,更灵活,其character总结

...

翻译前声明: 本翻译对于原文进行了适量删节和修改。 本翻译只做为学习参考使用,不得用于任何商业目的

...

python2和python3的区别,1.性能 Py3.0运行 pystone benchmark的速

...

原文地址:http://wiki.woodpecker.org.cn/moin/ObpLovelyPy

...

该程序是在python2.3上完成的,python版本间有差异。 Mapper: import sys

...

这是我在lucene in action 中看到的,本来想翻译一下,但是翻译成汉语就没有原来的味道了。

...

原文地址:http://blog.chinaunix.net/uid-25525723-id-3630

...

写like语句的时候 一般都会写成 like '% %' 在mybatis里面写就是应该是

...

初识spark-基本概念和例子 | _yiihsia[互联网后端技术] 初

...

Python 字符串操作,字符串序列用于表示和存储文本,python中字符串是不可变的,一旦声明,不能

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值