Python 3.6“IndexError:列表索引超出范围”
Posted
技术标签:
【中文标题】Python 3.6“IndexError:列表索引超出范围”【英文标题】:Python 3.6 "IndexError: list index out of range" 【发布时间】:2018-10-29 10:03:07 【问题描述】:谁能告诉我我的错误?
realpair = input("")
realpairfinal = []
rp = list(realpair)
print(rp[0],rp[1])
for i in range(0, len(realpair)):
a = []
v1 = rp[0]
v2 = rp[1]
rp.pop(0)
rp.pop(0)
a.append(v1)
a.append(v2)
realpairfinal.append(a)
pair = realpairfinal
pair2 = realpairfinal
print(realpairfinal)
如果我的输入是 123456,realpairfinal 应该是 [[1, 2][3, 4][5, 6]] 但它告诉我:
1 2
Traceback (most recent call last):
v1 = rp[0]
IndexError: list index out of range
【问题讨论】:
【参考方案1】:realpair = input("")
realpairfinal = []
rp = list(realpair)
for i in range(0, len(realpair)-3):
a = []
v1 = rp[0]
v2 = rp[1]
rp.pop(0)
rp.pop(0)
a.append(v1)
a.append(v2)
realpairfinal.append(a)
pair = realpairfinal
pair2 = realpairfinal
print(realpairfinal)
从长度中减去三。输出:[['1', '2'], ['3', '4'], ['5', '6']]
【讨论】:
是的,谢谢,这是对的,但我没有做减法,而是做了for i in range(0, len(realpair), 2)
,这似乎是一种更通用的写下方法,因此系统也可以或多或少地获得输入跨度>
【参考方案2】:
pairs = [list(realpair[i:i+2]) for i in range(0, len(realpair), 2)]
这是使用list comprehension 构造一个列表,而不是创建一个空列表,然后将元素附加到它。
我正在获取长度为 2 的子字符串,使用 list() 将其添加到字符列表中,然后将其添加到外部列表中(使用列表理解)
【讨论】:
这是什么意思,我从来没有在python中看到过这样的代码。你能解释一下吗?但是我感谢您在范围末尾的 2 .. 那是我的错误 你去。 ^^以上是关于Python 3.6“IndexError:列表索引超出范围”的主要内容,如果未能解决你的问题,请参考以下文章
谷歌云:需要 python 3.6,在 ssh 中是 3.6,但在 jupyter notebook 中仍然是 3.5